JP7674475B2 - Blockchain Machine Network Acceleration Engine - Google Patents
Blockchain Machine Network Acceleration Engine Download PDFInfo
- Publication number
- JP7674475B2 JP7674475B2 JP2023523289A JP2023523289A JP7674475B2 JP 7674475 B2 JP7674475 B2 JP 7674475B2 JP 2023523289 A JP2023523289 A JP 2023523289A JP 2023523289 A JP2023523289 A JP 2023523289A JP 7674475 B2 JP7674475 B2 JP 7674475B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- transactions
- transaction
- packets
- hardware accelerator
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本開示の実施例は、概して、ブロックチェーン内のノードのためのハードウェアアクセラレータに関する。 Embodiments of the present disclosure generally relate to hardware accelerators for nodes in a blockchain.
Hyperledger Fabricは、許可されたブロックチェーンのためのオープンソースの企業グレードの実装プラットフォームである。Hyperledger Fabricにおけるトランザクションフローは、実行-順序付け-検証モデルに従い、トランザクションが最初に実行され、次いでブロックに順序付けされ、最後に検証され、(これまでコミットされたブロックのグローバル状態を保持するための状態データベースとともに)台帳にコミットされる。その結果、ファブリックネットワークは、ピア、オーダラー、クライアントなどの異なるタイプのノードを含み、各ノードは、メンバーシップサービスプロバイダ(Membership Service Provider、MSP)によって提供されるアイデンティティを有する。 Hyperledger Fabric is an open-source, enterprise-grade implementation platform for permissioned blockchains. Transaction flow in Hyperledger Fabric follows an execute-order-validate model, where transactions are first executed, then ordered into blocks, and finally validated and committed to the ledger (along with a state database to hold the global state of blocks committed so far). As a result, the Fabric network contains different types of nodes, such as peers, orderers, and clients, and each node has an identity provided by a Membership Service Provider (MSP).
許可されたブロックチェーン(Hyperledger Fabric、Quorum、Cordaなどのような)は、の一部となるためにアクセスを必要とするブロックチェーンネットワークである。これらのブロックチェーンは、トランザクションが、ブロックチェーンの台帳に追加される前に検証されることを必要とする。しかしながら、検証プロセスは、複数のトランザクションを検証しなければならないときにボトルネックをしばしば経験する特定のノードによって実行されなければならない。このボトルネックは、ブロックチェーンが新しいトランザクションを迅速にコミットする能力を制限することができる。 Permissioned blockchains (such as Hyperledger Fabric, Quorum, Corda, etc.) are blockchain networks that require access in order to be a part of. These blockchains require transactions to be verified before they can be added to the blockchain's ledger. However, the verification process must be performed by specific nodes, which often experience a bottleneck when they have to verify multiple transactions. This bottleneck can limit the blockchain's ability to quickly commit new transactions.
一実施形態は、プロセッサと、ブロックチェーンのレッジを記憶するメモリと、ハードウェアアクセラレータと、を含むコンピューティングシステムを説明する。したがって、ハードウェアアクセラレータは、台帳にコミットされるトランザクションのブロックに対応する複数のパケットを受信することと、トランザクションのブロック内の異なるコンポーネントのハッシュを生成することと、ハッシュが以前に計算されたハッシュと一致すると判定すると、ハードウェアアクセラレータにおいてトランザクションのブロックを検証するためのタスクを生成することと、を行うように構成されている。更に、プロセッサ又はハードウェアアクセラレータのうちの1つは、トランザクションのブロックが有効であると判定すると、トランザクションのブロックを台帳にコミットするように構成されている。 One embodiment describes a computing system that includes a processor, a memory that stores a ledger of a blockchain, and a hardware accelerator. Thus, the hardware accelerator is configured to receive a number of packets corresponding to a block of transactions to be committed to the ledger, generate a hash of different components in the block of transactions, and generate a task at the hardware accelerator to validate the block of transactions upon determining that the hash matches a previously calculated hash. Further, one of the processor or the hardware accelerator is configured to commit the block of transactions to the ledger upon determining that the block of transactions is valid.
本明細書で説明される別の実施形態は、プロセッサと、ブロックチェーンのレッジを記憶するメモリと、台帳にコミットされるトランザクションのブロックを受信することと、ブロックの署名を確認することと、ブロック内のトランザクションの各々を検証することと、トランザクションの検証結果を記憶することと、を行うように構成されたハードウェアアクセラレータと、を含むコンピューティングシステムである。更に、プロセッサ又はハードウェアアクセラレータのうちの1つは、トランザクションを台帳にコミットするように構成されている。 Another embodiment described herein is a computing system including a processor, a memory that stores a ledger of a blockchain, and a hardware accelerator configured to receive a block of transactions to be committed to the ledger, verify a signature of the block, verify each of the transactions in the block, and store a result of the verification of the transactions. Further, one of the processor or the hardware accelerator is configured to commit the transactions to the ledger.
本明細書で説明される別の実施形態は、ハードウェアアクセラレータにおいて、ブロックチェーンの台帳にコミットされるトランザクションのブロックに対応する複数のパケットを受信することと、ハードウェアアクセラレータにおいて、トランザクションのブロック内の異なるコンポーネントのハッシュを計算することと、ハードウェアアクセラレータにおいて、ハッシュが以前に計算されたハッシュと一致すると判定することと、ハードウェアアクセラレータにおいて、トランザクションのブロックを検証するためのタスクを生成することと、を含む方法である。 Another embodiment described herein is a method that includes receiving, at a hardware accelerator, a number of packets corresponding to a block of transactions to be committed to a blockchain ledger; computing, at the hardware accelerator, hashes of different components in the block of transactions; determining, at the hardware accelerator, that the hash matches a previously computed hash; and generating, at the hardware accelerator, a task to validate the block of transactions.
上記の特徴が詳細に理解することができるように、上記で簡単に要約されたより具体的な説明が、例示的な実装形態を参照することによって行われ得、それらの実装形態のうちのいくつかが添付の図面に示される。しかしながら、添付の図面は、典型的な例示的な実装形態のみを例解しており、したがって、その範囲を限定するものと見なされるべきではないことに留意されたい。 So that the above features can be understood in detail, a more particular description, briefly summarized above, can be made by reference to exemplary implementations, some of which are shown in the accompanying drawings. It should be noted, however, that the accompanying drawings illustrate only typical exemplary implementations and therefore should not be considered as limiting the scope thereof.
様々な特徴が、図面を参照して以下に説明される。図面は縮尺通りに描かれている場合もあるし、描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、明細書の網羅的な説明として、又は特許請求の範囲に対する限定として意図されていない。更に、例解された実施例は、示されたすべての態様又は利点を有する必要はない。特定の実施例に関連して説明される態様又は利点は、必ずしもその実施例に限定されず、そのように例解されていない場合、又はそのように明示的に説明されていない場合であっても、任意の他の実施例において実施することができる。 Various features are described below with reference to the drawings. It should be noted that the drawings may or may not be drawn to scale, and elements of similar structure or function are represented by similar reference numerals throughout the drawings. It should be noted that the drawings are intended only to facilitate the description of features. They are not intended as an exhaustive description of the specification or as limitations on the scope of the claims. Furthermore, an illustrated embodiment need not have all aspects or advantages shown. An aspect or advantage described in connection with a particular embodiment is not necessarily limited to that embodiment and may be implemented in any other embodiment, even if not so illustrated or explicitly described.
本明細書の実施形態は、ブロックチェーンマシン又はノードのためのハードウェアアクセラレータ(例えば、ネットワークアクセラレーションエンジン又は計算アクセラレーションエンジン)を説明する。ハードウェアアクセラレータは、トランザクションのブロックの別個のコンポーネントを含むパケットを解析して、検証プロセスを実行するためのデータを生成する。すなわち、ネットワークプロトコル(例えば、TCP(Transmission Control Protocol))を使用して伝送されるデータは、通常、パケットが最初にソフトウェアによって処理されることなくハードウェアアクセラレータによって使用されるのには適していない。ソフトウェアを使用することに伴う待ち時間を回避するために、本明細書の実施形態は、データが、ソフトウェアの介入なしにアクセラレータ内の下流コンポーネントによって消費され得るように、パケットを解析し、かつデータを準備するハードウェアアクセラレータ内のプロトコルプロセッサを説明する。次いで、これらの下流コンポーネントは、検証動作を実行して、1つ以上のトランザクションが、許可されたブロックチェーン又は許可のないブロックチェーンの台帳にコミットされる(すなわち、追加される)前に、それらのトランザクションを検証することができる。 Embodiments herein describe a hardware accelerator (e.g., a network acceleration engine or a computational acceleration engine) for a blockchain machine or node. The hardware accelerator parses packets containing separate components of a block of transactions to generate data for performing a validation process. That is, data transmitted using a network protocol (e.g., TCP (Transmission Control Protocol)) is typically not suitable for use by a hardware accelerator without the packets being first processed by software. To avoid the latency associated with using software, embodiments herein describe a protocol processor within the hardware accelerator that parses the packets and prepares the data so that it can be consumed by downstream components within the accelerator without software intervention. These downstream components can then perform validation operations to validate one or more transactions before they are committed (i.e., added) to the ledger of a permissioned or permissionless blockchain.
ブロックチェーンは、複数のピア-ノードを含み得、その各々は、サーバ又はコンテナ上で動作する標準ソフトウェアを含む。バリデータノードとして知られるいくつかのピア-ノードは、それらのトランザクションがブロックチェーン台帳にコミットされ得る前に、数十又は数百のトランザクションのブロックを迅速に検証する必要があるため、システム性能の主なボトルネックである。ソフトウェアを使用してトランザクションのブロックを検証する代わりに、ハードウェアアクセラレータは、わずかな時間でトランザクションを検証することができる。次いで、ピア-ノードソフトウェアは、ハードウェアアクセラレータから検証結果を収集し、その結果を、受信したブロックデータと組み合わせて、ブロックを導出し、次いで、ブロックは、記憶された台帳にコミットされる。実験的な設定において、ハードウェアアクセラレータを有するノードは、ネットワーキングアクセラレーションエンジンに結合されたとき、マルチコアサーバ上で実行するソフトウェアのみのピアと比較して、トランザクションコミットスループットにおいて10倍を超える改善を達成した。 A blockchain may include multiple peer nodes, each of which contains standard software running on a server or container. Some peer nodes, known as validator nodes, are the main bottleneck in system performance because they need to quickly verify blocks of tens or hundreds of transactions before those transactions can be committed to the blockchain ledger. Instead of using software to verify blocks of transactions, a hardware accelerator can verify transactions in a fraction of the time. The peer node software then collects the verification results from the hardware accelerator and combines them with the received block data to derive a block, which is then committed to a stored ledger. In experimental settings, nodes with hardware accelerators, when coupled to a networking acceleration engine, achieved over 10x improvement in transaction commit throughput compared to software-only peers running on multi-core servers.
図1は、一例による、許可されたブロックチェーン100に対応するタイミングチャートである。図1の許可されたブロックチェーン100のタイミングチャートは、特に、Hyperledger Fabricに関するが、本明細書の実施形態は、任意のタイプの許可されたブロックチェーンに適用することができる。更に、本明細書の実施形態は、トランザクションが台帳にコミットされる前にトランザクションに対して検証プロセスを実行する非許可ブロックチェーンにも適用し得る。したがって、Hyperledger Fabricは、以下に説明されるハードウェアアクセラレータから利益を得ることができる好適なブロックチェーンネットワークの単なる一例として提供される。 1 is a timing diagram corresponding to a permissioned blockchain 100, according to an example. The permissioned blockchain 100 timing diagram of FIG. 1 is specifically directed to Hyperledger Fabric, but the embodiments herein may be applied to any type of permissioned blockchain. Additionally, the embodiments herein may also be applied to non-permissioned blockchains that perform a validation process on transactions before they are committed to the ledger. Thus, Hyperledger Fabric is provided as merely one example of a suitable blockchain network that may benefit from the hardware accelerator described below.
ブロックチェーン100におけるトランザクションフローは、実行-順序付け-検証モデルに従い、トランザクションが最初に実行され、次いでブロックに順序付けされ、最後に検証され、(これまでコミットされたブロックのグローバル状態を保持するための状態データベースとともに)台帳にコミットされる。その結果、許可されたブロックチェーン100は、ピア、オーダラー、クライアントなどの異なるタイプのノードを含み、各ノードは、MSPによって提供されるアイデンティティを有する。この識別は、証明書の形態で提供することができる。 Transaction flow in the blockchain 100 follows an execute-order-validate model, where transactions are first executed, then ordered into blocks, and finally validated and committed to the ledger (along with a state database to hold the global state of blocks committed so far). As a result, a permissioned blockchain 100 includes different types of nodes, such as peers, orderers, and clients, and each node has an identity provided by the MSP. This identification can be provided in the form of a certificate.
クライアントは、ブロックチェーン100上でコミットされるトランザクションを提出する任意のエンティティであり得る。例えば、ブロックチェーン100が送金を追跡するために金融機関によって使用される場合、クライアントは、資金を第1の口座から(同じ金融機関又は異なる機関における)第2の口座に移動させるためのトランザクションを提出し得る。ステップ1において、クライアントは、ブロックチェーンにコミットされるトランザクションを提出する。具体的には、トランザクションは、複数の承認ノード(又はピア)上で受信される。承認ノードは、トランザクションを実行/承認すること、及びブロックを台帳に対して検証/コミットすることの両方を行う。各承認ノードは、それ自体の状態データベースに対してトランザクションを実行して、トランザクションの読み取り-書き込みセットを計算する(図1においてEとしてマークされる)。読み取りセットは、アクセスされたキー及びそれらのバージョン番号であり、書き込みセットは、それらの新しい値で更新されるキーである。
A client can be any entity that submits a transaction to be committed on the blockchain 100. For example, if the blockchain 100 is used by a financial institution to track money transfers, a client may submit a transaction to move funds from a first account to a second account (at the same financial institution or a different institution). In
承認プロセスが成功した場合(すなわち、エラーがない場合)、ステップ2において、承認ノードは、それらの承認をトランザクションに追加し、トランザクションをクライアントに返す。クライアントが十分な数の承認を収集した後、ステップ3で、クライアントは、順序付けサービスに、トランザクションを検証プロセスに提出するように求める。一実施形態では、順序付けサービスは、コンセンサス機構を使用して、トランザクションの全順序付けを確立するオーダラー(例えば、コンピューティングノード)を含む。Raft及びApache Kafka/Zookeeperベースのコンセンサス機構など、複数のプラガブルコンセンサス機構が利用可能である。 If the endorsement process is successful (i.e., there are no errors), in step 2, the endorsement nodes add those endorsements to the transaction and return the transaction to the client. After the client collects a sufficient number of endorsements, in step 3, the client asks the ordering service to submit the transaction to a validation process. In one embodiment, the ordering service includes an orderer (e.g., a computing node) that uses a consensus mechanism to establish a total ordering of transactions. Several pluggable consensus mechanisms are available, such as Raft and Apache Kafka/Zookeeper-based consensus mechanisms.
ステップ4において、順序付けサービスは、ブロックへの包含のためにトランザクションが受け入れられた後にクライアントに応答する(ステップ4)。次いで、順序付けサービスは、順序付けされたトランザクションからトランザクションのブロック105を作成する。一実施形態では、順序付けサービスは、ユーザ構成タイムアウトが満了したときか、又はブロックサイズに対するユーザ構成制限に達したときに、順序付けられたトランザクションからブロック105を作成する。
In step 4, the ordering service responds to the client after the transaction has been accepted for inclusion in the block (step 4). The ordering service then creates a block of
ブロック105が作成されると、順序付けサービスは、ステップ5において、例えばゴシッププロトコルを介して、それをすべての承認及び非承認ノードにブロードキャストする。各ノードは、ブロック105内のすべてのトランザクションを検証し、次いで、ブロックを台帳及び状態データベース(Vとしてマークされる)にコミットする。最後に、ノードのうちの1つが、トランザクションがコミットされたことか、又はトランザクションが台帳において無効又は有効としてマークされたかどうかの通知をクライアントに送信する(ステップ6)。
Once
図1は、検証フェーズの検証ワークフロー110を右側により詳細に示している。ワークフロー110は、ブロック105を受信するすべてのノード上で実行される4つのステップを示す。ゴシッププロトコルを介して順序付けサービス(又はリードノード)からトランザクションのブロック105を受信すると、ステップ1において、ノードは、ブロックの構文構造をチェックし、その署名を確認し、次いで、以下でより詳細に説明する様々な動作のパイプラインを介してそれを送信する。ステップ2では、ブロック内の各トランザクションが構文的にチェックされ、その署名が確認される。次いで、検証システムチェーンコード(validation system chaincode、VSCC)が、承認が検証され、関連付けられたチェーンコードの承認ポリシーが評価される各トランザクション上で実行される。トランザクションは、その承認ポリシーが満たされない場合、無効としてマークされる。
Figure 1 shows the
ステップ3において、マルチバージョン同時実行制御(multi-version concurrency control、MVCC)チェックが実行される。このチェックは、有効なトランザクション間に読み取り-書き込み競合がないことを確実にする。換言すれば、それは、1つのトランザクションのみが意図されたときに2つのトランザクションがコミットされる二重支払い問題を回避する。各トランザクションの読み取りセットは、状態データベース(図1において「statedb」として例解される)にアクセスすることによって再び計算され、承認フェーズからの読み取りセットと比較される。これらの読み取りセットが異なる場合、他の何らかのトランザクション(このブロック105又は以前のブロックのいずれかにおける)が既に同じキーを変更しており、したがって、このトランザクションは無効としてマークされる。
In step 3, a multi-version concurrency control (MVCC) check is performed. This check ensures that there are no read-write conflicts between valid transactions. In other words, it avoids the double-spend problem, where two transactions are committed when only one transaction was intended. The read set of each transaction is again calculated by accessing the state database (illustrated as "statedb" in FIG. 1) and compared with the read set from the confirmation phase. If these read sets are different, then some other transaction (either in this
最後のステップ4において、ブロックは、ノードにおいて、記憶された台帳にコミットされる。一実施形態では、ブロック全体が最初に、そのトランザクションの有効/無効フラグとともに台帳に書き込まれる。次いで、有効なトランザクションの書き込みセットが状態データベースにコミットされる。 In the final step 4, the block is committed to a ledger stored at the node. In one embodiment, the entire block is first written to the ledger along with valid/invalid flags for its transactions. Then the write set of valid transactions is committed to the state database.
図2A及び図2Bは、一例による、ハードウェアアクセラレータ210を有するブロックチェーン内のノード200のブロック図である。一実施形態では、ノード200は、トランザクションをブロックチェーンにコミットするときに検証プロセスを実行する任意のコンピューティングシステムである。例えば、ノード200は、図1に示すように、承認又は非承認ノード又はピアであり得る。一実施形態では、ノード200は、サーバ又は他のコンピューティングシステムである。
2A and 2B are block diagrams of a node 200 in a blockchain having a
図2Aにおいて、ノード200Aは、CPU205、ハードウェアアクセラレータ210、及びメモリ235を含む。CPU205は、それぞれが任意の数の処理コアを含むことができる任意の数のプロセッサを表す。メモリ235は、揮発性メモリ、不揮発性メモリ(例えば、ハードディスクドライブ)、及びこれらの組み合わせを表す。示されるように、メモリ235は、ブロックチェーンのコミットされたトランザクションをリストする台帳240を記憶する。
In FIG. 2A,
ハードウェアアクセラレータ210は、図1に例解される検証ワークフロー110を実行するための様々な回路要素を含む。一実施形態では、ハードウェアアクセラレータ210は、集積回路である。別の実施形態では、ハードウェアアクセラレータ210は、1つ以上の集積回路が実装される基板(例えば、PCIeカードなどのプリント回路基板(printed circuit board、PCB))である。一実施形態において、集積回路は、プログラマブルロジックを含む、フィールドプログラマブルゲートアレイ(例えば、field programmable gate array、FPGA)又はシステムオンチップ(system on a chip、SoC)である。この例では、アクセラレータ210内の様々な回路ブロックは、プログラマブルロジックで実装される。しかしながら、別の実施形態では、集積回路は、アクセラレータ210の回路ブロックが、強化された回路においてのみ実装される、特定用途向け集積回路(application specific integrated circuit、ASIC)であり得る。プログラマブルロジックを有するFPGA及びSoCを使用することは、検証プロセスが変更された場合に再プログラムされる柔軟性をアクセラレータ210に与える一方、ASICを使用することは、スペースを節約し得る。
The
アクセラレータ210は、トランザクションに関するデータを含むイーサネット(登録商標)パケットを受信するためのネットワークインタフェース215と、データを再フォーマットするためのプロトコルプロセッサ220と、検証ワークフローを実行するためのブロックプロセッサ225と、検証の結果を記憶するレジスタマップ230(reg_map)(例えば、メモリレジスタ)と、を含む。プロトコルプロセッサ220、ブロックプロセッサ225、及びレジスタマップ230は、以下でより詳細に説明される。一般に、これらのハードウェアブロックは、受信したトランザクションのブロックを検証するために協働する。すなわち、ネットワークインタフェース215は、トランザクションのブロックに対応するデータを含む複数のパケットを受信する。このデータは処理に適さないフォーマットであり得るため、プロトコルプロセッサ220は、ブロックプロセッサ225が消費のためにデータを再フォーマットし、出力することができる。ブロックプロセッサ225は、検証ワークフローにおけるほとんどのステップを実行するが、これらのステップのいくつかは、プロトコルプロセッサ220及びレジスタマップ230によって実行され得る。更に、台帳240が、メモリ235(アクセラレータ210によって直接アクセス可能ではない場合がある)に記憶されるため、ノード200Aは、検証されたトランザクションを台帳240にコミットするために、CPU205に依存し得る。すなわち、アクセラレータ210は、CPU205が評価することができる検証結果をレジスタマップ230に記憶し、次いで、トランザクションを台帳にコミットすることができる。すなわち、一実施形態では、すべてのトランザクションがレッジにコミットされるが、検証フラグは、どのトランザクションが有効であり、どのトランザクションが無効であったかに関する情報を記憶する。しかしながら、状態データベース(以下に説明する)に対しては、正常に有効にされたトランザクションのみがコミットされる。検証の大部分はハードウェアアクセラレータ210において実行されるが、トランザクションを台帳240にコミットすることは、CPU205上で実行されるソフトウェアによって実行され得る。
The
図2Bは、ネットワークインターフェースカード(network interface card、NIC)245の追加を除いて、図2Aのノード200Aと同じであるノード200Bを例解する。一実施形態では、NIC245は、どのネットワークトラフィックがアクセラレータ210を通って流れ、どのネットワークトラフィックがNIC245を通って流れるかを判定する能力をノード200Bに提供する。一実施形態では、ブロックチェーンに関連するすべてのトラフィックは、アクセラレータ210を介して送信され得、ブロックチェーンに関連しない受信されたネットワークトラフィックは、NIC245によって処理される。対照的に、ノード200Aでは、ノード200Aによって受信されたすべてのネットワークトラフィック(ブロックチェーントラフィックであろうと非ブロックチェーントラフィックであろうと)は、アクセラレータ210において受信され得る。例えば、プロトコルプロセッサ220は、検証に関連するネットワークトラフィックをブロックプロセッサ225に転送するが、他のすべてのトラフィックをCPU205に転送し得る。
FIG. 2B illustrates node 200B, which is the same as
別の実施形態において、アクセラレータ210は、アクセラレータ210におけるトランザクションの検証に関連するネットワークトラフィックのみを受信する一方、他のすべてのトラフィック(承認要求などの他のタイプのブロックチェーントラフィックであるか、非ブロックチェーントラフィックであるかにかかわらず)は、NIC245によって受信され、処理される。
In another embodiment,
図2A又は図2Bのいずれにも示されていない更に別の実施形態では、アクセラレータ210は、CPU205の支援なしにすべてのブロックチェーン動作を実行し得る。その実施形態では、NIC245及びCPU205は、ブロックチェーンタスクを実行するために使用されないが、CPU205は、アクセラレータ210を構成又は制御するために使用され得る。このシナリオでは、全てのネットワークトラフィックは、ブロックチェーン関連パケットを処理するが他のパケットをCPU205へ/から転送するアクセラレータ210を通過する。
In yet another embodiment, not shown in either FIG. 2A or FIG. 2B,
図3は、一例による、ハードウェアアクセラレータ内のプロトコルプロセッサとブロックプロセッサとの間のインターフェース300を例解する。この例では、インターフェース300は、ブロックデータ、トランザクションデータ(図3ではtxデータとラベル付けされている)、承認データ、読み取りセットデータ、及び書き込みセットデータをブロックプロセッサ225に伝送するために使用される。すなわち、プロトコルプロセッサ220は、トランザクションのブロックを検証するために使用される情報を含むイーサネット(登録商標)パケットを、ブロックチェーン内の他のノードから(例えば、順序付けサービス内のオーダラーから)受信する。次いで、プロトコルプロセッサ220は、ブロックプロセッサ225によって消費することができるように、データを再フォーマット/解析する。
Figure 3 illustrates an
図4は、一例による、パケットを解析して、ハードウェア処理のためにデータを準備するための方法400のフローチャートである。説明を容易にするために、方法400におけるブロックは、以下の図と並行して説明される。
Figure 4 is a flow chart of a
ブロック405において、アクセラレータ内のネットワークインタフェースは、トランザクションのブロックの別個のコンポーネントを含むパケットを受信する。ブロックは通常、単一のパケットで送信するには大きすぎるため(例えば、ブロックは1メガバイトを超える可能性がある)、ソフトウェアアプリケーションは、ネットワークプロトコル又はソフトウェアドライバに依存して、ブロックを複数のパケットにチャンク化する。しかしながら、ネットワークプロトコル/ドライバは、典型的には、データがブロック内でどのように構造化されるかについての知識を有しておらず、したがって、データは、典型的には、アドホック方式で伝送される。これは、ハードウェアアクセラレータが、受信されたパケットを解析し、トランザクションのブロックを再構築することを、不可能ではないにしても困難にする。しかしながら、本明細書の実施形態は、ハードウェアアクセラレータが、トランザクションのブロック内の異なるコンポーネントを再構築するために、パケットを解析することができるように、トランザクションのブロックを伝送するための技法を説明する。
At
図5Aは、一例による、トランザクションのブロック505内の各コンポーネントについて別個のパケットを伝送することを例解する。具体的には、図5Aは、送信者515(例えば、ブロックチェーン内のオーダラー又は他のピアノード)がハードウェアアクセラレータ210にパケット520を伝送し、したがって、ブロックメッセージ505が再構築され得るようにこれらのパケットが正確に解析され得る、通信システム500を例解する。そうするために、送信者515内のソフトウェアは、ブロックメッセージ505を、ここではヘッダ、トランザクション(TX)1~5、及びメタデータとして示される、その別個のブロックコンポーネント510に分割する。すなわち、ブロックメッセージ505内のデータを別個のパケットにどのように分割するかを判定するために、ネットワークプロトコル又はドライバに依存するのではなく、(ブロック505の構造を認識している)送信者515上のソフトウェアが、ブロックをそのコンポーネント510に分割することができる。
5A illustrates transmitting separate packets for each component in a
図5Aは、ネットワーク、例えば、インターネットなどのプライベートネットワーク又はパブリックネットワークを介して、パケット520A~520Gをハードウェアアクセラレータ210に伝送する送信者515を例解する。示されるように、各パケット520は、コンポーネント510のうちの1つのみを含み、すなわち、パケット520Aは、ブロック505のヘッダを含み、パケット520B~520Fは各々、トランザクションのうちの1つを含み、パケット520Gは、ブロック505のメタデータを含む。ソフトウェアがブロック505をそのコンポーネント510に分割しなければ、ネットワークプロトコル又はドライバは、ヘッダ及びTX1の一部を含む第1のパケット、TX1の残りのデータ及びTX2の一部を含む第2のパケットなどを送信した場合がある。ブロック505内の異なるコンポーネント510のこの予測不能な分岐は、ブロック505が再構築され得るようにデータを解析するように、ハードウェアアクセラレータ210を設計することを困難にし得る。
5A illustrates a
また、図5Aには示されていないが、送信者515は、コンポーネント510に関連付けられた署名された証明書を削除し得る。これらの証明書を使用して、ブロック505及びブロック内のトランザクションを検証し得る。しかしながら、これらの証明書(例えば、x509証明書)は大きく、これは、それらをアクセラレータ210に送信することが、かなりの量の帯域幅を必要とすることを意味する。一実施形態において、送信者515は、パケット520を形成し、次いでアクセラレータ210に送信される前に、ブロック505から証明書を除去する。代わりに、送信者515は、証明書をID(例えば、8ビットコード)で置き換えることができる。一実施形態では、送信者515は、証明書を別々に一度にアクセラレータ210に伝送し、アクセラレータ210は、次いで、後で取り出すために証明書をキャッシュに記憶することができる。このようにして、証明書がブロック505内の複数のコンポーネント510に関連付けられている場合、証明書は繰り返して、ではなく1回送信される。
5A, the
図5Bは、一例による、ブロック内の個々のコンポーネントを送信するためのパケット520を示す。520は、L2及びIP/UDPデータ、トランスポートヘッダ525、ブロックマシンプロトコルヘッダ530、及びブロックメッセージペイロード535を含む。トランスポートヘッダ525は、シーケンス番号(Seq)、肯定応答番号(Ack)、及び制御データ(Ctrl)を含むことができる。シーケンス番号は、パケットがブロック505を表すパケットのシーケンス内のどこにあるかを示す。肯定応答番号は、送信者515に返送するためのAckパケットを生成するときに、アクセラレータ210によって使用される。制御データは、アプリケーションレベルプロトコル障害及び受信機バッファステータスなどの情報を含むことができる。
FIG. 5B illustrates a
ブロックマシンプロトコルヘッダ530は、メッセージタイプ(MsgType)及び注釈を含む。メッセージタイプは、ペイロード535内のデータがブロックヘッダであるか、トランザクションであるか、メタデータであるかを示す。注釈は、重要なデータの位置を指摘する。例えば、注釈は、パケット520内の関連データ(例えば、ペイロード535内の特定のデータを見つけることができる場所)を指すポインタ、及びキャッシュ内又は異なるパケット(しかし同じブロック)内のデータを指すロケータを含み得る。一実施形態において、注釈内のロケータは、パケット520のIDをマークするために使用される。ペイロード535は、パケット内で送信される特定のコンポーネント510に対応するデータ、すなわち、ブロック505からのメタデータを含むことができる。
The block machine protocol header 530 includes a message type (MsgType) and an annotation. The message type indicates whether the data in the
各パケット520はブロック505のコンポーネント510のうちの1つを含むため、これは、アクセラレータ210がブロックのすべてのパケット520を受信する前にデータを処理し始めることができるという利点を提供する。すなわち、ソフトウェアがすべてのパケットを受信し、次いで検証のためにブロック505を再構築するのを待つ代わりに、アクセラレータ210は、トランザクションが入ってきたときにトランザクションを処理することができる。例えば、プロトコルプロセッサは、TX2を含むパケット520Cがアクセラレータ210において受信される前に、TX1に対応するパケット520Bを解析することができる。したがって、アクセラレータ210は、トランザクションが再構築され、検証され得る前にすべてのパケットが受信されなければならないソフトウェアソリューションよりもはるかに早くトランザクションを処理し始めることができる。
Because each
図6は、一例による、ハードウェアアクセラレータ内のプロトコルプロセッサ220のブロック図である。図示のように、データパケット520は、レベル4~7(L4~L7)パケットヘッダ(例えば、ブロックマシンプロトコルヘッダ530)を解析して、メッセージタイプ及び注釈を抽出するパケットフィルタ610において受信される。メッセージタイプは、ブロック開始、ブロックメタデータ、トランザクションなどを含み得る。メッセージペイロードの注釈は、ブロックヘッダの位置、ブロック署名の場所、ブロックID、トランザクションデータ開始、チャネル名、トランザクションID、チェーンコード名、作成者認証局(certificate authority、CA)ID、トランザクションアクション、トランザクションCA ID、契約名、契約入力、承認者アクション、読み取り/書き込みセット、承認者リスト、トランザクション署名、オーダラーCA ID、オーダラー署名、証明書ID、証明書公開キーデータ、情報以来有効な状態、情報を通じて有効な状態などを含むことができる。パケットフィルタ610はまた、トランスポートヘッダ内のシーケンス番号を識別し、この番号を応答生成器605に転送し、応答生成器210は、応答パケット(例えば、肯定応答パケット)を送信者(例えば、オーダラー)に返送する。
6 is a block diagram of a
パケットフィルタ610は、メッセージタイプ、注釈、及びパケットペイロードを、注釈に基づいてメッセージペイロードを処理し、ブロックプロセッサ225のための関連データを抽出するブロック抽出器615に転送する。ブロック抽出器615はまた、応答生成器605にメッセージ有効信号を提供し、それにより、生成器605は、ブロック及びそのトランザクションが有効であるか無効であるかを送信者に通知することができる。ブロックプロセッサ225の詳細は、方法400の残りの部分及び以下の図において説明される。
The packet filter 610 forwards the message type, annotation, and packet payload to the
方法400に戻ると、ブロック410において、プロトコルプロセッサ内のブロック抽出器は、パケット内のIDを使用して、パケットに対応する署名された証明書を識別する。上述したように、送信者は、ブロックを複数のパケットでハードウェアアクセラレータに伝送する前に、ブロックから証明書を取り除き得る。これは、証明書が大きく、めったに変更されないために行われ得る。したがって、証明書を参照するパケット内のはるかに小さいID又はキーで証明書を置き換えることは、かなりの帯域幅を節約し、トランザクションのブロック内の各コンポーネントが単一のパケットで送信され得ることを確実にし得る。
Returning to
しかしながら、パケットが受信されると、ブロック抽出器は、ブロック(及びブロック内のトランザクション)を検証し、ブロック及びトランザクションのシンタックスが正しいことを確実にするために、証明書を必要とする場合がある。したがって、ブロック抽出器はコンポーネントを再構築することができ、これは、ブロック抽出器が証明書を識別し、取り出すことを意味する。 However, when a packet is received, the block extractor may need the certificate to validate the block (and the transactions within the block) and ensure that the syntax of the block and transactions is correct. The block extractor can then reconstruct the components, which means that the block extractor identifies and retrieves the certificate.
図7は、一実施例による、ブロック抽出器615のブロック図である。示されるように、ブロック抽出器615は、パケットペイロード及び注釈を受信して、そのペイロードに対応する証明書(又は複数の証明書)を識別するデータ挿入器705を含む。例えば、ペイロードがブロックメタデータである場合、ペイロードは、ブロックを準備したオーダラーの証明書に対応するIDを含み得る。ペイロードがトランザクションを含む場合、ペイロードは、トランザクションを提出したクライアントに対応するID、及びトランザクションを承認した承認ノードに対応する1つ以上のIDみ得る。したがって、データ挿入器705は、ペイロード内の複数のIDを識別し得る。
Figure 7 is a block diagram of a
IDを使用して、データ挿入器705は、アイデンティティキャッシュ710内でルックアップを実行して、IDに対応する署名された証明書を取り出す。すなわち、オーダラーが証明書をアクセラレータに送信するとき、アクセラレータは、それらの証明書(及びそれらの対応するID)をアイデンティティキャッシュ710に記憶し、その結果、トランザクションのブロックを検証するときに、これらの証明書を取り出すことができる。 Using the ID, the data inserter 705 performs a lookup in the identity cache 710 to retrieve the signed certificate that corresponds to the ID. That is, when the orderer sends the certificates to the accelerator, the accelerator stores those certificates (and their corresponding IDs) in the identity cache 710 so that it can retrieve these certificates when validating blocks of transactions.
方法400に戻ると、ブロック415において、ブロック抽出器615は、ブロックの別個のコンポーネントを再構築する。すなわち、各ペイロードが受信されると、ブロック抽出器615は、対応する証明書を取り出すことができる。これは図7に示されており、データ挿入器705は、取り出された証明書(又は複数の証明書)をペイロード内の他のデータとともにデータ抽出器715に伝送する。
Returning to
データ抽出器715は、異なる時間にトランザクションのブロック内のコンポーネントを再構築し得る。例えば、時間1の間、データ抽出器715は、第1の受信されたパケットを使用してブロックのヘッダを再構築し、時間2において、データ抽出器715は、第2の受信されたパケットを使用してブロック内の第1のトランザクションを再構築し、以下同様である。したがって、ブロック抽出器615は、ブロック内の異なるコンポーネントが抽出器615内の異なるステージ(例えば、異なる回路モジュール)で並列に実行され得るようにパイプライン化され得る。
The data extractor 715 may reconstruct components within a block of transactions at different times. For example, during
ブロック420において、ハッシュ計算器720は、ブロック内のセパレータコンポーネントのハッシュを計算する。一実施形態では、ハッシュ計算器720は、ブロック全体、ブロックのあらゆるトランザクション、及び各トランザクションのあらゆる承認に対するハッシュを生成する。ハッシュ計算器720は、これらのハッシュを異なる時間に生成し得る。例えば、ハッシュ計算器720は、トランザクションに対応するパケットを受信したときに、特定のトランザクションに対するハッシュ(及びそのトランザクションに関連付けられたすべての承認に対するハッシュ)を生成することができる。しかしながら、ハッシュ計算器720は、ブロックについてのすべてのパケットを受信した後、ブロック全体に対するハッシュを計算するのを待つ場合がある。
At
ブロック425において、ハッシュチェッカ725は、ハッシュ計算器720によって計算されたハッシュがパケット内のハッシュと一致するかどうかを判定する。すなわち、送信者によって伝送されたパケットは、ハッシュ計算器720によって生成されたハッシュと比較することができる以前に計算されたハッシュ(又は少なくともハッシュへのポインタ)を含み得る。例えば、送信者は、ブロック、ブロック内の各トランザクション、及びトランザクションにおける各承認に対するハッシュを計算し、それらのハッシュをアクセラレータ210に伝送し得る。これらのハッシュがハッシュチェッカ725によって生成されたローカルハッシュと一致する場合、これは、メッセージが有効であり、ブロック及びトランザクションのための適切なシンタックスが従われたことを意味する。ハッシュが一致しない場合、方法はブロック445に進み、ハードウェアアクセラレータは、受信されたデータがシンタックスエラーを有することを示す。一実施形態では、ハードウェアアクセラレータは、検証プロセスが失敗したことを示す応答メッセージを送信者に送信する。
At
ハッシュが、受信されたハッシュと一致すると仮定すると、方法400は、ブロック430に進み、ハードウェアアクセラレータは、受信されたデータが正常に解析されたことを示す。一実施形態では、図6の応答生成器605は、トランザクションのブロックが、プロトコルプロセッサ220によって正常に受信され、処理されたことを示す応答又は肯定応答(acknowledge、ACK)メッセージを送信者に伝送する。
Assuming the hash matches the received hash,
ブロック435において、タスクジェネレータ730は、検証プロセスを完了するために、ブロックプロセッサに対するタスクを生成する。一実施形態では、タスクジェネレータ730は、ブロックタスク、トランザクションタスク、及び承認者タスクを生成する。ブロックタスクは、ブロックID、ブロック署名(例えば、ブロックを生成したオーダラーの証明書)などを含み得る。トランザクションタスクは、トランザクションID、トランザクション署名(例えば、トランザクションを生成したクライアントの証明書)、トランザクション読み取り/書き込みセットなどを含み得る。一実施形態では、タスクジェネレータ730は、ブロック内の各トランザクションに対するトランザクションタスクを生成する。タスクジェネレータ730はまた、トランザクションにおける各承認に対する承認者タスクを生成することができる。すなわち、各トランザクションはいくつかの承認を受け取ることができるため、タスクジェネレータ730は、それらの承認の各々に対するタスクを生成することができる。
At
ブロック440において、タスクジェネレータ730は、タスク及び対応するデータをハードウェアアクセラレータ内のブロックプロセッサに転送する。次いで、ブロックプロセッサは、ブロック、トランザクション、及び承認を検証することができる。一般に、プロトコルプロセッサ(及び図5~図7に例解されるその回路コンポーネント)は、受信されたパケットを解析して、ブロックのデータを、ソフトウェアの助けなしにブロックプロセッサによって要約又は処理され得るフォーマットに再フォーマットする。したがって、ブロックチェーンにおける検証プロセスは、ハードウェアによって完全に実行され、それによって、このプロセスに必要な時間及び計算リソースを低減することができる。 In block 440, the task generator 730 transfers the tasks and corresponding data to the block processor in the hardware accelerator. The block processor can then verify the blocks, transactions, and acknowledgements. In general, the protocol processor (and its circuit components illustrated in Figures 5-7) analyzes the received packets and reformats the data of the blocks into a format that can be summarized or processed by the block processor without the aid of software. Thus, the verification process in the blockchain is performed entirely by hardware, thereby reducing the time and computational resources required for this process.
図8は、一例による、トランザクションをブロックチェーン台帳にコミットする前にトランザクションを検証するための方法800のフローチャートである。説明を容易にするために、方法800における異なるステージは、以下の図9~図11と併せて説明される。更に、方法800におけるステージは、図1に例解される検証ワークフロー110のステップ1~4に相関する。
FIG. 8 is a flowchart of a
方法800は、ハードウェアアクセラレータが、例えば、順序付けサービスから、台帳にコミットされ得る前に検証される必要があるトランザクションのブロックをすでに受信していると仮定する。更に、方法800は、プロトコルプロセッサがブロックシンタックスチェック(例えば、図1の「blkシンタックスチェック」)及びトランザクションシンタックスチェック(例えば、図1の「txシンタックスチェック」)を実行して、検証を実行するために必要なすべてのデータが受信されたことを確認したと仮定する。
ステージ805において、ハードウェアアクセラレータは、トランザクションのブロック上の署名を確認する。より具体的には、ブロックプロセッサは、図3に示される情報をプロトコルプロセッサから受信し、ブロック確認を実行することができる。図9に示すように、ブロックプロセッサ225は、2つのハードウェアサブモジュール:ブロック確認905及びブロック検証910を含む。ブロック確認905は、ブロック上のオーダラー署名を確認するための楕円曲線デジタル署名アルゴリズム(elliptic curve digital signature algorithm、ECDSA)エンジン920を含む。言い換えれば、ECDSAエンジン920は、ブロック内の受信された署名を、オーダラーのための既知の署名(例えば、証明書)と比較して、それらが一致することを確実にする。このようにして、ブロック確認905は、トランザクションのブロックが認められたノードから来たことを確かめることができる。ECDSAエンジン920が示されているが、任意の好適な署名アルゴリズムエンジンを使用することができる。
At
オーダラー署名を含むことに加えて、ブロック確認905で受信されたブロックデータはまた、ブロック番号、ブロック内のトランザクションの数などを含むこともできる。 In addition to including the orderer signature, the block data received in block confirmation 905 may also include the block number, the number of transactions in the block, etc.
方法800に戻ると、ステージ810において、ハードウェアアクセラレータは、ブロック内の複数のトランザクションを検証する。図9において、この機能は、ブロック検証910によって実行される。すなわち、ブロック確認905は、ブロックが既知のオーダラーによって受信されたことを確実にする一方、ブロック検証910は、ブロック内の個々のトランザクションを検証する。これを行うために、ブロック検証910は、プロトコルプロセッサ(図9には図示せず)から、トランザクションデータ、承認データ、読み取りセットデータ、及び書き込みセットデータを受信する。ブロック検証910は、次いで、ブロック番号、有効/無効トランザクションフラグ、待ち時間などの検証結果を含むブロック検証データを出力する。
Returning to
一実施形態では、ブロック確認905及びブロック検証910は、ブロックレベルでパイプライン化される。すなわち、ブロックプロセッサ225は、ブロック確認905においてトランザクションの第1のブロックを処理することができる(パイプラインステージ1)一方、ブロック検証910は、トランザクションの第2のブロックを処理する(パイプラインステージ2)。言い換えれば、ブロック確認905は、ECDSAエンジン920を使用して、ブロック検証910が第2のブロック内の個々のトランザクションを検証するのと同時に、許可されたオーダラーが第1のブロックを伝送したことを確実にすることができる。
In one embodiment, block confirmation 905 and block verification 910 are pipelined at the block level. That is,
ブロックプロセッサ225はまた、ブロック確認905及びブロック検証910から受信した信号を監視することによって、ブロックレベル及びトランザクションレベルの統計値を収集するブロックモニタ915も含む。例えば、ブロックモニタ915は、トランザクションのブロックを検証するのに必要な時間若しくは待ち時間、又はブロックプロセッサ225のスループット(例えば、単位時間当たりに処理されるブロックの数)を判定し得る。
更に、図8は、ステージ810がステージ815~825に細分することができることを例解する。一実施形態では、方法800のステージ815~825は、図9のブロック検証910のより詳細な図を例解する図10のパイプラインステージ2a、2b、及び2cに対応する。
Further, FIG. 8 illustrates that stage 810 can be subdivided into stages 815-825. In one embodiment, stages 815-825 of
ステージ815において、ブロック検証910における第1のパイプラインステージ2aは、各トランザクションの署名を確認する。図10に示すように、ステージ2aは、各々がECDSAエンジン1035を含む複数のトランザクション確認ブロック1005を含む。これらのエンジン1035は、トランザクションのクライアント(又は作成者)の署名を確認する。すなわち、ECDSAエンジン1035は、受信された署名を、txデータ及び作成者の公開キーペアに基づいて計算された署名と比較することによって、トランザクションが既知のクライアントによって署名されたことを確実にする。
In
複数のトランザクション確認ブロック1005が存在するため、ステージ2aは、複数のトランザクションに対するクライアント署名を並行して検証することができる。ブロック検証910が含むトランザクション確認ブロック1005の数を判定することは、設計上の選択である。追加のトランザクション確認ブロック1005を有することは、ステージ2aが、より多くのトランザクションを並列に処理することができるが、アクセラレータ内の追加の空間及び電力を使用するという犠牲を払うことを意味する。 The presence of multiple transaction confirmation blocks 1005 allows stage 2a to verify client signatures for multiple transactions in parallel. Determining how many transaction confirmation blocks 1005 a block verification 910 includes is a design choice. Having additional transaction confirmation blocks 1005 means that stage 2a can process more transactions in parallel, but at the cost of using additional space and power in the accelerator.
方法800に戻ると、ステージ820において、ブロック検証910は、承認ポリシーを使用して各トランザクションの承認を確認する。図10に示すように、パイプラインステージ2bは、複数のトランザクションVSCCブロック1010を含み、トランザクションVSCCブロック1010は、各々が複数のECDSAエンジン1015(又は任意の他のタイプの署名確認エンジン)及び承認ポリシー評価器1020を含む。トランザクションVSCCブロック1010は各々、特定のトランザクションの承認を確認する。そうするために、トランザクションVSCCブロック1010は、承認者ID及び確認データを含む承認データを受信する。クライアントトランザクションは、(図1に示されるように)複数の承認を受信し得るため、各ECDSAエンジン1015は、承認のうちの1つを並行して評価することができる。すなわち、トランザクションAが2つの承認を受信した場合、ECDSAエンジン1015Aは、第1の承認が、認められた承認ノードによって署名されたことを確認することができ、同時に、ECDSAエンジン1015Bは、第2の承認が、認められた承認ノードによって署名されたことを確認する。ここでも、各ブロック1010内のECDESAエンジン1015の数は、設計上の選択である。
Returning to
一実施形態では、承認ポリシー評価器1020は、チェーンコードごとに承認ポリシーを維持することができる。評価器1020は、トランザクションが、適切な承認を受信したことを確かめる。すなわち、認められた承認ノードによって承認が与えられたと仮定すると、評価器1020は、トランザクションが、適切な承認ノードから承認を受信したことを確かめる。例えば、金銭が2つの銀行間で移転されるべきであることをトランザクションが示す場合、評価器1020は、トランザクションがそれらの銀行の両方によって運用される承認ノードから承認を受信したことを確実にすることをチェックし得る。トランザクションが、1つの銀行のみに対する承認ノードによって、又はトランザクションによって影響を受けない異なる銀行によって承認された場合、評価器1020は、トランザクションを無効にし得る。 In one embodiment, the authorization policy evaluator 1020 can maintain an authorization policy for each chaincode. The evaluator 1020 verifies that the transaction received proper authorization. That is, assuming authorization was given by a recognized authorization node, the evaluator 1020 verifies that the transaction received authorization from the appropriate authorization node. For example, if a transaction indicates that money should be transferred between two banks, the evaluator 1020 may check to ensure that the transaction received authorization from authorization nodes operated by both of those banks. If the transaction is approved by an authorization node for only one bank, or by a different bank that is not affected by the transaction, the evaluator 1020 may invalidate the transaction.
ステージ2bは複数のトランザクションVSCCブロック1010を含むため、ブロック検証910は、複数のトランザクションに対する承認を並行して確認することができる。すなわち、ステージ2aが、トランザクションが、認められたクライアントによって発信されたことを確認した後、ステージ2bは、トランザクションの承認が、有効であり、1つ以上の承認ポリシーを満たすことを確認することができる。ブロック検証910内のトランザクションVSCCブロック1010の数は、設計上の選択である。 Because stage 2b includes multiple transaction VSCC blocks 1010, block validation 910 can check authorizations for multiple transactions in parallel. That is, after stage 2a verifies that a transaction was originated by an authorized client, stage 2b can verify that the transaction's authorizations are valid and satisfy one or more authorization policies. The number of transaction VSCC blocks 1010 in block validation 910 is a design choice.
方法800に戻ると、ステージ825において、ブロック検証910は、バージョンチェックを実行し、状態データベース1030への書き込みキーをコミットする。これは、状態データベース1030及びレジスタマップ(図10には図示せず)に通信可能に結合されているトランザクションMVCC書き込みブロック1025を含むステージ2cによって実行される。更に、レジスタマップは、任意選択で、ノード内のCPU(図示せず)に結合されている。一実施形態では、トランザクションMVCC書き込みブロック1025は、状態データベース1030から読み取りキーを調べて、バージョンチェックを実行し、確かめられた場合、有効なトランザクションの更新された書き込みキーをデータベース1030にコミットする。そうするために、トランザクションMVCC書き込みブロック1025は、プロトコルプロセッサから読み取りセットデータ(各要素が読み取りキー-バージョンペアを含む)及び書き込みセットデータ(各要素が書き込みキー-値ペアを含む)を受信する。一実施形態では、状態データベース1030は、現在書き込まれている(又は更新されている)キーの読み取りを許可しないための内部ロック機構を含む。
Returning to
図10のステージ2a~2cはパイプライン化することができる。すなわち、図9は、ブロック確認905とブロック検証910との間のブロックレベルパイプラインを例解するが、図10は、特定のブロック内のトランザクションをステージ2a~2c内で並列に処理することができるトランザクションレベルパイプラインを例解する。すなわち、ステージ2aは、ブロック内のトランザクションの第1のセットを処理することができる一方、ステージ2bは、同じブロック内のトランザクションの第2のセットを処理し、ステージ2cは、同じブロック内のトランザクションの第3のセットを処理する。しかしながら、一実施形態では、トランザクション間の依存性のために、ブロック検証910は、同じブロックからのトランザクションのみを処理し得る。すなわち、ブロック検証910内の1つのステージは、第1のブロックからのトランザクションを処理することができない場合があるが、異なるステージは、第2のブロックからのトランザクションを処理する。 Stages 2a-2c of FIG. 10 may be pipelined. That is, while FIG. 9 illustrates a block-level pipeline between block confirmation 905 and block verification 910, FIG. 10 illustrates a transaction-level pipeline in which transactions within a particular block may be processed in parallel within stages 2a-2c. That is, stage 2a may process a first set of transactions in a block, while stage 2b processes a second set of transactions in the same block, and stage 2c processes a third set of transactions in the same block. However, in one embodiment, due to dependencies between transactions, block verification 910 may only process transactions from the same block. That is, one stage in block verification 910 may not be able to process transactions from a first block, but a different stage processes transactions from a second block.
方法800に戻ると、ステージ830において、ブロック検証910は、検証プロセスを実行した結果をレジスタ(例えば、レジスタマップ230)に記憶する。図11に示すように、レジスタマップは、ブロック番号、有効/無効トランザクションフラグ、待ち時間(ブロックモニタによって測定される)などを含み得るブロック検証910からブロック検証データを受信する。検証結果は、レジスタマップに書き込まれ、CPU205は、AXI-lite又はPCIeインターフェースを使用して、検証結果にアクセスすることができる。一実施形態では、現在記憶されている検証結果がCPU205によって読み出されるまで、新しい検証結果をレジスタマップ230に書き込むことができない。更に、図11は、上述したように、ハードウェアアクセラレータ内のレジスタマップ230がCPU205によってアクセス可能であるシステム1100を例解するが、アクセラレータは、CPU205を使用しなくてもよく、代わりに、CPU205上で実行されるソフトウェアの支援なしに検証プロセスを完了することができる。
Returning to
ステージ835において、CPU(又はハードウェアアクセラレータ)は、トランザクションが有効であるか無効であるかをクライアントに通知する。すなわち、CPUは、検証結果を評価して、トランザクションのブロック内の各個々のトランザクションが検証されたかどうかを判定することができる。次いで、クライアントは、無効なトランザクションを再提出することを選択し得る。
At
ステージ840において、トランザクションは、台帳にコミットされる。一実施形態では、有効トランザクションと無効トランザクションの両方が台帳にコミットされ、コミットされたトランザクションが有効であるか否かを示すための有効/無効フラグを含むことができる。 At stage 840, the transaction is committed to the ledger. In one embodiment, both valid and invalid transactions are committed to the ledger and may include a valid/invalid flag to indicate whether the committed transaction is valid or not.
前述では、本開示において提示される実施形態が参照される。しかしながら、本開示の範囲は、特定の記載された実施形態に限定されない。代わりに、説明される特徴及び要素の任意の組み合わせは、異なる実施形態に関連するか否かにかかわらず、企図される実施形態を実装及び実践するために企図される。更に、本明細書に開示される実施形態は、他の可能な解決策又は従来技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示の範囲を限定するものではない。したがって、前述の態様、特徴、実施形態、及び利点は、単に例示的なものであり、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素又は限定とは見なされない。 In the foregoing, reference is made to the embodiments presented in this disclosure. However, the scope of the disclosure is not limited to the specific described embodiments. Instead, any combination of the described features and elements, whether related to different embodiments or not, is contemplated for implementing and practicing the contemplated embodiments. Furthermore, the embodiments disclosed herein may achieve other possible solutions or advantages over the prior art, but whether or not a particular advantage is achieved by a given embodiment does not limit the scope of the disclosure. Thus, the foregoing aspects, features, embodiments, and advantages are merely exemplary and are not considered elements or limitations of the appended claims unless expressly recited in the claims.
当業者によって理解されるように、本明細書に開示される実施形態は、システム、方法、又はコンピュータプログラム製品として具現化され得る。したがって、態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又は本明細書ではすべて一般に「回路」、「モジュール」、若しくは「システム」と呼ばれ得るソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形態をとり得る。更に、態様は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。 As will be appreciated by one of ordinary skill in the art, the embodiments disclosed herein may be embodied as a system, method, or computer program product. Accordingly, aspects may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which may be referred to generally herein as a "circuit," "module," or "system." Additionally, aspects may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied therein.
1つ以上のコンピュータ可読媒体の任意の組合せを利用し得る。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、若しくは半導体のシステム、装置、若しくはデバイス、又は前述の任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(random access memory、RAM)、読み取り専用メモリ(read-only memory、ROM)、消去可能プログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(portable compact disc read-only memory、CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は前述の任意の好適な組み合わせを含む。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを含むか、又は記憶することができる任意の有形媒体である。 Any combination of one or more computer readable media may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. The computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (non-exhaustive list) of computer readable storage media include an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this specification, a computer readable storage medium is any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.
コンピュータ可読信号媒体は、例えば、ベースバンドにおいて、又は搬送波の一部として、コンピュータ可読プログラムコードが具現化された伝搬データ信号を含み得る。そのような伝搬信号は、電磁気、光学、又はそれらの任意の好適な組み合わせを含むが、それらに限定されない、種々の形態のうちのいずれかをとり得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを通信、伝搬、又は移送することができる任意のコンピュータ可読媒体であり得る。 A computer-readable signal medium may include a propagated data signal in which computer-readable program code is embodied, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electromagnetic, optical, or any suitable combination thereof. A computer-readable signal medium is not a computer-readable storage medium, but may be any computer-readable medium capable of communicating, propagating, or transporting a program for use by or in connection with an instruction execution system, apparatus, or device.
コンピュータ可読媒体上に具現化されたプログラムコードは、ワイヤレス、ワイヤライン、光ファイバケーブル、RFなど、又は前述の任意の好適な組合せを含むが、それらに限定されない、任意の適切な媒体を使用して伝送され得る。 The program code embodied on the computer readable medium may be transmitted using any suitable medium, including but not limited to wireless, wireline, fiber optic cable, RF, or the like, or any suitable combination of the foregoing.
本開示の態様の動作を実行するためのコンピュータプログラムコードは、例えば、Java(登録商標)、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組合せで書き込まれ得る。プログラムコードは、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、リモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で完全に実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(local area network、LAN)若しくは広域ネットワーク(wide area network、WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るか、又は外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に接続が行われ得る。 Computer program code for carrying out the operations of aspects of the present disclosure may be written in any combination of one or more programming languages, including, for example, object-oriented programming languages such as Java, Smalltalk, C++, and traditional procedural programming languages such as the "C" programming language or similar programming languages. The program code may run completely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer, partially on a remote computer, or completely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (e.g., via the Internet using an Internet Service Provider).
本開示の態様は、本開示に提示された実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート例解図及び/又はブロック図を参照して以下に記載されている。フローチャート例解図及び/又はブロック図の各ブロック、並びにフローチャート例解図及び/又はブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装することができることが理解されよう。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為を実施するための手段を作成するような機械をもたらすように、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサに提供され得る。 Aspects of the present disclosure are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments presented in the present disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer, a special purpose computer, or other programmable data processing device such that the instructions, executed via a processor of the computer or other programmable data processing device, result in a machine that creates means for performing the functions/acts specified in the blocks of the flowcharts and/or block diagrams.
これらのコンピュータプログラム命令はまた、コンピュータ可読記憶媒体に記憶された命令が、フローチャート及び/又はブロック図のブロックで指定された機能/行為の態様を実装する命令を含む製造物品を生成するように、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに、特定の方法で機能するように指示することができる、コンピュータ可読記憶媒体に記憶され得る。 These computer program instructions may also be stored on a computer-readable storage medium, where the instructions stored on the computer-readable storage medium can direct a computer, programmable data processing device, and/or other device to function in a particular manner to produce an article of manufacture that includes instructions that implement aspects of the functions/acts specified in the blocks of the flowcharts and/or block diagrams.
コンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされて、一連の動作ステップを、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行させて、コンピュータ実装プロセスを生成し得、そのため、コンピュータ、又は他のプログラマブル装置上で実行される命令は、フローチャート及び/又はブロック図のブロックに指定される機能/行為を実装するためのプロセスを提供する。 Computer program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be executed on the computer, other programmable apparatus, or other device to generate a computer-implemented process, such that the instructions executing on the computer or other programmable apparatus provide a process for implementing the functions/acts specified in the flowchart and/or block diagram blocks.
図中のフローチャート及びブロック図は、本発明の様々な実施例によるシステム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、及び動作を例解する。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント、又は部分を表し得る。いくつかの代替的な実装形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生し得る。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行され得るか、又はブロックは、関与する機能に応じて、逆の順序で実行され得る場合がある。ブロック図及び/又はフローチャート例解図の各ブロック、並びにブロック図及び/又はフローチャート例解図におけるブロックの組み合わせは、指定された機能若しくは行為を実行するか、又は専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実装することができることにも留意されたい。 The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block of the flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions described in the blocks may occur out of the order described in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may be executed in reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and/or flowchart illustrations, as well as combinations of blocks in the block diagrams and/or flowchart illustrations, may be implemented by a dedicated hardware-based system that performs the specified functions or acts, or a combination of dedicated hardware and computer instructions.
開示の技術は、特許請求の範囲に記載されたものに加えて、以下の非限定的な実施例によって表現され得る。 The disclosed technology can be expressed by the following non-limiting examples in addition to those described in the claims.
実施例1.ブロックチェーン内のノードからトランザクションのブロックを含む複数のパケットを受信するように構成されたネットワークインタフェースと、複数のパケットを解析して、トランザクションに関するデータを生成するように構成されたプロトコルプロセッサと、ブロックの署名を確認することと、ブロック内のトランザクションの各々を検証することと、トランザクションの検証結果を記憶することと、を行うように構成されたブロックプロセッサと、を備える、ブロックチェーンのための検証プロセスを加速させるための集積回路。 Example 1. An integrated circuit for accelerating a validation process for a blockchain, comprising: a network interface configured to receive a plurality of packets including a block of transactions from a node in the blockchain; a protocol processor configured to analyze the plurality of packets to generate data regarding the transactions; and a block processor configured to verify the signature of the block, verify each of the transactions in the block, and store validation results of the transactions.
実施例2.集積回路が、システムオンチップ(SoC)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)のうちの少なくとも1つを含む、実施例1に記載の集積回路。 Example 2. The integrated circuit of Example 1, wherein the integrated circuit includes at least one of a system on chip (SoC), a field programmable gate array (FPGA), or an application specific integrated circuit (ASIC).
実施例3.SoC又はFPGAが、プログラマブルロジックを含む。実施例2に記載の集積回路。 Example 3. The integrated circuit according to Example 2, wherein the SoC or FPGA includes programmable logic.
実施例4.ASICが、硬化回路のみを含む、実施例2に記載の集積回路。
実施例5.ブロックプロセッサが、ブロックの署名がブロックチェーン内のオーダラーの既知の署名と一致することを確認するように構成された第1の署名アルゴリズムエンジンを含むブロック確認と、ブロック内のトランザクションの各々を検証するように構成されたブロック検証と、を含む、実施例1に記載の集積回路。
Example 4. The integrated circuit of example 2, wherein the ASIC includes only the hardening circuitry.
Example 5. The integrated circuit of example 1, wherein the block processor includes a block confirmation including a first signature algorithm engine configured to verify that a signature of the block matches a known signature of an orderer in the blockchain, and a block validation configured to verify each of the transactions in the block.
実施例6.ブロック検証が、トランザクションに対応する署名がブロックチェーンを使用することを許可されたクライアントの既知の署名と一致することを確認するように構成された第2の署名アルゴリズムエンジンを含むトランザクション確認モジュールと、トランザクションにおける承認が、ブロックチェーン内の既知の承認ノードによって署名されたことを確認するように構成された第3の署名アルゴリズムエンジンと、承認が承認ポリシーを満たすことを確実にするように構成された承認ポリシー評価器と、状態データベース内のトランザクションに関連付けられたキー-値ペアを読み取りかつ書き込むように構成されたトランザクションマルチバージョン同時実行制御(MVCC)書き込みブロックと、を含む、トランザクション検証システムチェーンコード(VSCC)ブロックと、を含む、実施例5に記載の集積回路。 Example 6. The integrated circuit of Example 5, including a transaction verification module including a second signature algorithm engine configured to verify that a signature corresponding to a transaction matches a known signature of a client authorized to use the blockchain, a third signature algorithm engine configured to verify that an authorization in a transaction was signed by a known authorization node in the blockchain, an authorization policy evaluator configured to ensure that the authorization satisfies an authorization policy, and a transaction multi-version concurrency control (MVCC) write block configured to read and write key-value pairs associated with the transaction in a state database.
実施例7.ブロック検証が、トランザクションの第1のセットの署名を確認するために並列に動作するように構成された複数のトランザクション確認モジュールと、トランザクションの第2のセットの承認を確認するために並列に動作するように構成された複数のトランザクションVSCCブロックと、を含み、複数のトランザクションVSCCブロックが第2のセットのトランザクションを処理するのと同時に、複数のトランザクション確認モジュールが第1のセットのトランザクションを処理するように、複数のトランザクション確認モジュールが、パイプラインの第1のステージを形成し、複数のトランザクションVSCCブロックが、パイプラインの第2のステージを形成する、実施例6に記載の集積回路。 Example 7. The integrated circuit of Example 6, in which block validation includes a plurality of transaction verification modules configured to operate in parallel to verify signatures of a first set of transactions and a plurality of transaction VSCC blocks configured to operate in parallel to verify authorizations of a second set of transactions, the plurality of transaction verification modules forming a first stage of a pipeline and the plurality of transaction VSCC blocks forming a second stage of the pipeline, such that the plurality of transaction verification modules process the first set of transactions at the same time that the plurality of transaction VSCC blocks process the second set of transactions.
実施例8.複数のトランザクション確認モジュールの各々が、トランザクションのうちの1つにおける承認のセットを並列に確認するための複数のアルゴリズム署名エンジンを含む、実施例7に記載の集積回路。 Example 8. The integrated circuit of example 7, wherein each of the multiple transaction verification modules includes multiple algorithmic signature engines for verifying in parallel the set of acknowledgements in one of the transactions.
実施例9.ブロック検証がブロックチェーンのトランザクションの第2のブロックを処理するのと同時に、ブロック確認がブロックチェーンのトランザクションの第1のブロックを処理することができるように、ブロック確認がパイプラインにおける第1のステージを形成し、ブロック検証がパイプラインの第2のステージを形成する、実施例2に記載の集積回路。 Example 9. The integrated circuit of Example 2, wherein block confirmation forms a first stage in the pipeline and block verification forms a second stage of the pipeline, such that block confirmation can process a first block of blockchain transactions at the same time that block verification processes a second block of blockchain transactions.
実施例10.ハードウェアアクセラレータにおいて、ブロックチェーンの台帳にコミットされるトランザクションのブロックを受信することと、ハードウェアアクセラレータにおいて、ブロックの署名を確認することと、ハードウェアアクセラレータにおいて、ブロック内のトランザクションの各々を検証することと、ハードウェアアクセラレータにおいて、トランザクションの検証結果を記憶することと、トランザクションを台帳にコミットし、検証結果に基づいてトランザクションが有効であるか否かを示すことと、を含む、方法。 Example 10. A method including: receiving, at a hardware accelerator, a block of transactions to be committed to a blockchain ledger; verifying, at the hardware accelerator, a signature of the block; verifying, at the hardware accelerator, each of the transactions in the block; storing, at the hardware accelerator, a result of the transaction verification; committing the transaction to the ledger; and indicating whether the transaction is valid based on the result of the verification.
実施例11.トランザクションのブロックを受信することが、トランザクションのブロックを含む複数のパケットを受信することを含み、方法が、ハードウェアアクセラレータにおいて、複数のパケットを解析して、トランザクションに関するデータを生成することを更に含む、実施例10に記載の方法。 Example 11. The method of example 10, wherein receiving the block of transactions includes receiving a plurality of packets that include the block of transactions, and the method further includes parsing the plurality of packets at the hardware accelerator to generate data regarding the transactions.
実施例12.ブロック内のトランザクションの各々を検証することが、ブロックの署名がブロックチェーン内のオーダラーの既知の署名と一致することを確認することを更に含む、実施例10に記載の方法。 Example 12. The method of example 10, wherein verifying each of the transactions in the block further includes verifying that the signature of the block matches a known signature of the orderer in the blockchain.
実施例13.ブロック内のトランザクションの各々を検証することが、トランザクションにおける承認がブロックチェーン内の既知の承認ノードによって署名されたことを確認することと、トランザクションにおける承認が承認ポリシーを満たすことを確実にすることと、を更に含む、実施例10に記載の方法。 Example 13. The method of example 10, wherein validating each of the transactions in the block further includes verifying that the endorsements in the transaction were signed by a known endorsement node in the blockchain and ensuring that the endorsements in the transaction satisfy an endorsement policy.
実施例14.ブロックチェーンのための検証プロセスを加速させるための集積回路であって、ブロックチェーンの台帳にコミットされるトランザクションのブロックに対応する複数のパケットを受信するように構成されたデータ挿入器と、トランザクションのブロック内の異なるコンポーネントのハッシュを生成するように構成されたハッシュ計算器と、ハッシュが、以前に計算されたハッシュと一致すると判定するように構成されたハッシュチェッカと、トランザクションのブロックを検証するためのタスクを生成するように構成されたタスクジェネレータと、を含む、集積回路。 Example 14. An integrated circuit for accelerating a validation process for a blockchain, the integrated circuit including: a data inserter configured to receive a plurality of packets corresponding to a block of transactions to be committed to a ledger of the blockchain; a hash calculator configured to generate hashes of different components in the block of transactions; a hash checker configured to determine whether the hash matches a previously calculated hash; and a task generator configured to generate tasks to validate the block of transactions.
実施例15.集積回路が、システムオンチップ(SoC)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)のうちの少なくとも1つを含む、実施例14に記載の集積回路。 Example 15. The integrated circuit of Example 14, wherein the integrated circuit comprises at least one of a system on chip (SoC), a field programmable gate array (FPGA), or an application specific integrated circuit (ASIC).
実施例16.SoC又はFPGAが、プログラマブルロジックを含む、実施例15に記載の集積回路。 Example 16. The integrated circuit of Example 15, wherein the SoC or FPGA includes programmable logic.
実施例17.ASICが、硬化回路のみを含む、実施例15に記載の集積回路。
実施例18.トランザクションのブロックが、ブロックヘッダ、複数のトランザクション、及びメタデータを含み、ブロックヘッダ、複数のトランザクションの各々、及びメタデータの各々が、複数のパケットのうちの別個のパケットで送信され、複数のパケットが、ブロック又は複数のトランザクションに対応する署名された証明書を含まない、実施例14に記載の集積回路。
Example 17. The integrated circuit of example 15, wherein the ASIC includes only the hardening circuitry.
Example 18. The integrated circuit of example 14, wherein the block of transactions includes a block header, a plurality of transactions, and metadata, the block header, each of the plurality of transactions, and each of the metadata are transmitted in a separate packet of the plurality of packets, and the plurality of packets does not include a signed certificate corresponding to the block or the plurality of transactions.
実施例19.ブロックチェーン内の認められたノードに対応する署名された証明書のローカルコピーを記憶するアイデンティティキャッシュを更に備え、データ挿入器が、複数のパケットに含まれるIDを使用して、トランザクションのブロックに対応する署名された証明書をアイデンティティキャッシュから取り出すように構成されている、実施例18に記載の集積回路。 Example 19. The integrated circuit of Example 18, further comprising an identity cache that stores local copies of signed certificates corresponding to recognized nodes in the blockchain, and the data inserter is configured to retrieve from the identity cache the signed certificate corresponding to the block of transactions using the IDs included in the plurality of packets.
実施例20.複数のパケット内のデータ及び取り出された署名された証明書を使用して、トランザクションのブロックを再構築するように構成されたデータ抽出器を更に備え、ハッシュ計算器が、トランザクションの再構築されたブロックを使用して、ハッシュを生成するように構成されており、ハッシュチェッカが、トランザクションのブロックがシンタックスエラーを含まないことを確実にするために、生成されたハッシュが、以前に計算されたハッシュと一致するかどうかをチェックするように構成されている、実施例19に記載の集積回路。 Example 20. The integrated circuit of Example 19, further comprising a data extractor configured to reconstruct a block of transactions using the data in the plurality of packets and the retrieved signed certificate, a hash calculator configured to generate a hash using the reconstructed block of transactions, and a hash checker configured to check whether the generated hash matches a previously calculated hash to ensure that the block of transactions does not contain syntax errors.
前述は特定の実施例を対象とするが、他の実施例及び更なる実施例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。 While the foregoing is directed to certain embodiments, other and further embodiments may be devised without departing from the basic scope thereof, which scope is determined by the following claims.
Claims (15)
プロセッサと、
ブロックチェーンの台帳を記憶するメモリと、
ハードウェアアクセラレータであって、
前記台帳にコミットされるトランザクションのブロックに対応する複数のパケットを受信することと、
トランザクションの前記ブロック内の異なるコンポーネントのハッシュを生成することと、
前記ハッシュが、以前に計算されたハッシュと一致すると判定すると、前記ハードウェアアクセラレータにおいてトランザクションの前記ブロックを検証するためのタスクを生成することと、を行うように構成された、ハードウェアアクセラレータと、を備え、
前記プロセッサ又は前記ハードウェアアクセラレータのうちの1つが、トランザクションの前記ブロックが有効であると判定すると、トランザクションの前記ブロックを前記台帳にコミットするように構成されている、コンピューティングシステム。 1. A computing system comprising:
A processor;
A memory that stores the blockchain ledger;
A hardware accelerator, comprising:
receiving a plurality of packets corresponding to a block of transactions to be committed to the ledger;
generating hashes of different components within said block of transactions;
and if the hash matches a previously calculated hash, generating a task at the hardware accelerator to validate the block of transactions;
2. The computing system of claim 1 , wherein the processor or one of the hardware accelerator is configured to commit the block of transactions to the ledger if the processor or one of the hardware accelerator determines that the block of transactions is valid.
前記ブロックチェーン内の認められたノードに対応する前記署名された証明書のローカルコピーを記憶するアイデンティティキャッシュと、
前記複数のパケットに含まれるIDを使用して、前記アイデンティティキャッシュから、トランザクションの前記ブロックに対応する署名された証明書を取り出すように構成されたデータ挿入器と、を含む、請求項3に記載のコンピューティングシステム。 The hardware accelerator,
an identity cache that stores local copies of the signed certificates corresponding to recognized nodes in the blockchain;
and a data inserter configured to retrieve from the identity cache a signed certificate corresponding to the block of transactions using an ID included in the plurality of packets.
前記複数のパケット内のデータ、及び取り出された前記署名された証明書を使用して、トランザクションの前記ブロックを再構築するように構成されたデータ抽出器と、
トランザクションの再構築された前記ブロックを使用して、トランザクションの前記ブロックに対応するハッシュを生成するように構成されたハッシュ計算器と、
トランザクションの前記ブロックがシンタックスエラーを含まないことを確実にするために、生成された前記ハッシュが、以前に計算されたハッシュと一致するかどうかをチェックするように構成されたハッシュチェッカと、を含む、請求項4に記載のコンピューティングシステム。 The hardware accelerator,
a data extractor configured to reconstruct the block of transactions using data in the plurality of packets and the retrieved signed certificate;
a hash calculator configured to use the reconstructed block of a transaction to generate a hash corresponding to the block of a transaction;
and a hash checker configured to check whether the generated hash matches a previously calculated hash to ensure that the block of transactions does not contain syntax errors.
プロセッサと、
ブロックチェーンの台帳を記憶するメモリと、
ハードウェアアクセラレータであって、
前記台帳にコミットされるトランザクションのブロックを受信することと、
前記ブロックの署名を確認することと、
前記ブロック内の前記トランザクションの各々を検証することと、
前記トランザクションの検証結果を記憶することと、を行うように構成された、ハードウェアアクセラレータと、を備え、
前記プロセッサ又は前記ハードウェアアクセラレータのうちの1つが、前記トランザクションを前記台帳にコミットするように構成されている、コンピューティングシステム。 1. A computing system comprising:
A processor;
A memory that stores the blockchain ledger;
A hardware accelerator, comprising:
receiving a block of transactions to be committed to the ledger;
Verifying the signature of the block; and
validating each of the transactions in the block;
and storing a verification result of the transaction.
1. A computing system, wherein one of the processor or the hardware accelerator is configured to commit the transaction to the ledger.
前記ブロックチェーン内の別のノードからトランザクションの前記ブロックを受信するように構成されたネットワークインタフェースであって、トランザクションの前記ブロックが、複数のパケットに含まれる、ネットワークインタフェースと、
前記複数のパケットを解析して、前記トランザクションに関するデータを生成するように構成されたプロトコルプロセッサと、
前記プロトコルプロセッサから前記データを受信すること、前記ブロックの前記署名を確認すること、及び前記ブロック内の前記トランザクションの各々を検証することを行うように構成されたブロックプロセッサと、を含む、請求項6に記載のコンピューティングシステム。 The hardware accelerator,
a network interface configured to receive the block of transactions from another node in the blockchain, the block of transactions being included in multiple packets; and
a protocol processor configured to analyze the plurality of packets to generate data regarding the transaction;
and a block processor configured to receive the data from the protocol processor, verify the signature of the block, and validate each of the transactions in the block.
前記ブロックの前記署名が、前記ブロックチェーン内のオーダラーの既知の署名と一致することを確認するように構成された第1の署名アルゴリズムエンジンを含むブロック確認と、
前記ブロック内の前記トランザクションの各々を検証するように構成されたブロック検証と、を含む、請求項7に記載のコンピューティングシステム。 The block processor:
a block validation including a first signature algorithm engine configured to validate that the signature of the block matches a known signature of an orderer in the blockchain;
and a block validator configured to validate each of the transactions in the block.
前記トランザクションに対応する署名が、前記ブロックチェーンを使用することを許可されたクライアントの既知の署名と一致することを確認するように構成された第2の署名アルゴリズムエンジンを含むトランザクション確認モジュールと、
トランザクション検証システムチェーンコード(VSCC)ブロックであって、
前記トランザクションにおける承認が、前記ブロックチェーン内の既知の承認ノードによって署名されたことを確認するように構成された第3の署名アルゴリズムエンジンと、
前記承認が、承認ポリシーを満たすことを確実にするように構成された承認ポリシー評価器と、を含む、トランザクションVSCCブロックと、
状態データベース内の前記トランザクションに関連付けられたキー-値ペアを読み取りかつ書き込むように構成されたトランザクションマルチバージョン同時実行制御(MVCC)書き込みブロックと、を含む、請求項8に記載のコンピューティングシステム。 The block verification comprises:
a transaction validation module including a second signature algorithm engine configured to validate that a signature corresponding to the transaction matches a known signature of a client authorized to use the blockchain;
A transaction verification system chaincode (VSCC) block, comprising:
a third signature algorithm engine configured to verify that an acknowledgement in the transaction was signed by a known acknowledgement node in the blockchain; and
an authorization policy evaluator configured to ensure that the authorization satisfies an authorization policy; and
and a transactional multi-version concurrency control (MVCC) write block configured to read and write key-value pairs associated with the transaction in a state database.
ハードウェアアクセラレータにおいて、ブロックチェーンの台帳にコミットされるトランザクションのブロックに対応する複数のパケットを受信することと、
前記ハードウェアアクセラレータにおいて、トランザクションの前記ブロック内の異なるコンポーネントのハッシュを計算することと、
前記ハードウェアアクセラレータにおいて、前記ハッシュが、以前に計算されたハッシュと一致すると判定することと、
前記ハードウェアアクセラレータにおいて、トランザクションの前記ブロックを検証するためのタスクを生成することと、を含む、方法。 1. A method comprising:
receiving, at the hardware accelerator, a plurality of packets corresponding to a block of transactions to be committed to the blockchain ledger;
Calculating hashes of distinct components within the block of transactions in the hardware accelerator;
determining, in the hardware accelerator, that the hash matches a previously calculated hash;
generating a task at the hardware accelerator to validate the block of transactions.
前記複数のパケットに含まれるIDを使用して、前記アイデンティティキャッシュから、トランザクションの前記ブロックに対応する署名された証明書を取り出すことと、を更に含む、請求項13に記載の方法。 storing local copies of the signed certificates corresponding to recognized nodes in the blockchain in an identity cache of the hardware accelerator;
14. The method of claim 13, further comprising: retrieving a signed certificate corresponding to the block of transactions from the identity cache using an ID contained in the plurality of packets.
前記ハッシュが、トランザクションの再構築された前記ブロックを使用して計算され、
前記ハッシュが、前記以前に計算されたハッシュと一致すると前記判定することが、トランザクションの前記ブロックがシンタックスエラーを含むかどうかを示す、請求項14に記載の方法。 reconstructing the block of transactions using data in the packets and the retrieved signed certificate;
The hash is calculated using the reconstructed block of a transaction;
15. The method of claim 14, wherein the determining that the hash matches the previously calculated hash indicates whether the block of a transaction contains a syntax error.
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/083,195 | 2020-10-28 | ||
| US17/083,195 US11743051B2 (en) | 2020-10-28 | 2020-10-28 | Blockchain machine compute acceleration engine with a block verify and a block validate |
| US17/084,942 US11657040B2 (en) | 2020-10-30 | 2020-10-30 | Blockchain machine network acceleration engine |
| US17/084,942 | 2020-10-30 | ||
| PCT/US2021/038528 WO2022093335A1 (en) | 2020-10-28 | 2021-06-22 | Blockchain machine network acceleration engine |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2023547817A JP2023547817A (en) | 2023-11-14 |
| JP7674475B2 true JP7674475B2 (en) | 2025-05-09 |
Family
ID=76972009
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2023523289A Active JP7674475B2 (en) | 2020-10-28 | 2021-06-22 | Blockchain Machine Network Acceleration Engine |
Country Status (4)
| Country | Link |
|---|---|
| EP (1) | EP4237984A1 (en) |
| JP (1) | JP7674475B2 (en) |
| KR (1) | KR20230097062A (en) |
| WO (1) | WO2022093335A1 (en) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190026146A1 (en) | 2017-07-21 | 2019-01-24 | Intel Corporation | Apparatuses, methods, and systems for blockchain transaction acceleration |
| US20200092360A1 (en) | 2018-09-13 | 2020-03-19 | International Business Machines Corporation | Sparse peer with transient participation |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10928847B2 (en) * | 2018-09-29 | 2021-02-23 | Intel Corporation | Apparatuses and methods for frequency scaling a message scheduler data path of a hashing accelerator |
-
2021
- 2021-06-22 WO PCT/US2021/038528 patent/WO2022093335A1/en not_active Ceased
- 2021-06-22 KR KR1020237016456A patent/KR20230097062A/en active Pending
- 2021-06-22 EP EP21743337.4A patent/EP4237984A1/en active Pending
- 2021-06-22 JP JP2023523289A patent/JP7674475B2/en active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190026146A1 (en) | 2017-07-21 | 2019-01-24 | Intel Corporation | Apparatuses, methods, and systems for blockchain transaction acceleration |
| US20200092360A1 (en) | 2018-09-13 | 2020-03-19 | International Business Machines Corporation | Sparse peer with transient participation |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2023547817A (en) | 2023-11-14 |
| WO2022093335A1 (en) | 2022-05-05 |
| KR20230097062A (en) | 2023-06-30 |
| EP4237984A1 (en) | 2023-09-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12298938B2 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
| US20230161756A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
| US11196542B2 (en) | Checkpointing for increasing efficiency of a blockchain | |
| CN111095326B (en) | Method, system and apparatus for executing multiple transactions in a blockchain network | |
| US11334439B2 (en) | Checkpointing for increasing efficiency of a blockchain | |
| US10901957B2 (en) | Checkpointing for increasing efficiency of a blockchain | |
| US20190081793A1 (en) | Parallel-chain architecture for blockchain systems | |
| US20190354518A1 (en) | Chain mesh network for decentralized transaction systems | |
| US11743051B2 (en) | Blockchain machine compute acceleration engine with a block verify and a block validate | |
| US20200195441A1 (en) | Compact state database system | |
| US20210326867A1 (en) | Fork-Tolerant Consensus Protocol | |
| CN111953496A (en) | Method and system for blockchain variants using digital signatures | |
| KR20220088956A (en) | Systems and methods for providing specialized proof of confidential knowledge | |
| EP3983923A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
| US11626986B1 (en) | Method and system of rescinding access to blockchain data | |
| CN111275438A (en) | Consensus method, device, equipment and storage medium for block chain network | |
| CN111724258A (en) | Implementation method of consortium chain transaction concurrency scheme based on ring topology, dependency graph and multi-version control | |
| EP4348476B1 (en) | Method and system of rescinding access to blockchain data | |
| US11657040B2 (en) | Blockchain machine network acceleration engine | |
| JP7674475B2 (en) | Blockchain Machine Network Acceleration Engine | |
| US12574436B2 (en) | Blockchain machine broadcast protocol with loss recovery | |
| US12531754B2 (en) | Blockchain machine compute acceleration engine with out-of-order support | |
| JP7757531B2 (en) | Method and system for tamper-resistant event sourcing using a distributed ledger | |
| Song et al. | Microcosm: A Scalable Transaction Processing Scheme for Modular Blockchain (Industry Track) | |
| Mast | Protocols for Building Secure and Scalable Decentralized Applications |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240603 |
|
| TRDD | Decision of grant or rejection written | ||
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20250327 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20250401 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20250424 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7674475 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |