Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7674475B2 - Blockchain Machine Network Acceleration Engine - Google Patents
[go: Go Back, main page]

JP7674475B2 - Blockchain Machine Network Acceleration Engine - Google Patents

Blockchain Machine Network Acceleration Engine Download PDF

Info

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
Application number
JP2023523289A
Other languages
Japanese (ja)
Other versions
JP2023547817A (en
Inventor
ジャバイド,ハリス
ヤン,ジー
モハン,サンダララジャラオ
ブレブナー,ゴードン・ジョン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/083,195 external-priority patent/US11743051B2/en
Priority claimed from US17/084,942 external-priority patent/US11657040B2/en
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JP2023547817A publication Critical patent/JP2023547817A/en
Application granted granted Critical
Publication of JP7674475B2 publication Critical patent/JP7674475B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/76Protecting 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

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.

一例による、許可されたブロックチェーンに対応するタイミングチャートである。1 is a timing diagram corresponding to a permissioned blockchain, according to an example. 一例による、ハードウェアアクセラレータを有するブロックチェーン内のノードのブロック図である。FIG. 1 is a block diagram of a node in a blockchain having a hardware accelerator, according to an example. 一例による、ハードウェアアクセラレータを有するブロックチェーン内のノードのブロック図である。FIG. 1 is a block diagram of a node in a blockchain having a hardware accelerator, according to an example. 一例による、ハードウェアアクセラレータ内のプロトコルプロセッサとブロックプロセッサとの間のインターフェースを例解する。1 illustrates an interface between a protocol processor and a block processor in a hardware accelerator, according to one example. 一例による、パケットを解析して、ハードウェア処理のためにデータを準備するためのフローチャートである。1 is a flow chart for parsing packets and preparing data for hardware processing according to an example. 一例による、トランザクションのブロック内の各コンポーネントについて別個のパケットを送信することを例解する。14 illustrates sending a separate packet for each component in a block of transactions, according to one example. 一例による、ブロック内の個々のコンポーネントを送信するためのパケットを例解する。1 illustrates packets for transmitting individual components within a block, according to one example. 一例による、ハードウェアアクセラレータ内のプロトコルプロセッサのブロック図である。1 is a block diagram of a protocol processor in a hardware accelerator, according to an example. 一例による、プロトコルプロセッサ内のブロック抽出器のブロック図である。FIG. 13 is a block diagram of a block extractor in a protocol processor, according to an example. 一例による、トランザクションをブロックチェーン台帳にコミットする前にトランザクションを検証するためのフローチャートである。1 is a flowchart for validating a transaction before committing the transaction to a blockchain ledger, according to an example. 一例による、ブロックプロセッサのブロック図である。FIG. 2 is a block diagram of a block processor, according to an example. 一例による、ブロック検証のブロック図である。FIG. 1 is a block diagram of block verification, according to an example. 一例による、ハードウェアアクセラレータ内のレジスタとCPUとの間の通信を例解する。1 illustrates communication between registers in a hardware accelerator and a CPU, according to an example.

様々な特徴が、図面を参照して以下に説明される。図面は縮尺通りに描かれている場合もあるし、描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、明細書の網羅的な説明として、又は特許請求の範囲に対する限定として意図されていない。更に、例解された実施例は、示されたすべての態様又は利点を有する必要はない。特定の実施例に関連して説明される態様又は利点は、必ずしもその実施例に限定されず、そのように例解されていない場合、又はそのように明示的に説明されていない場合であっても、任意の他の実施例において実施することができる。 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 step 1, a client submits a transaction to be committed to the blockchain. Specifically, the transaction is received on multiple validating nodes (or peers). The validating nodes both execute/validate the transaction and verify/commit the block to the ledger. Each validating node executes the transaction against its own state database to compute the read-write set of the transaction (marked as E in Figure 1). The read set is the keys that have been accessed and their version numbers, and the write set is the keys that are updated with their new values.

承認プロセスが成功した場合(すなわち、エラーがない場合)、ステップ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 transactions 105 from the ordered transactions. In one embodiment, the ordering service creates a block 105 from the ordered transactions when a user-configured timeout expires or when a user-configured limit on block size is reached.

ブロック105が作成されると、順序付けサービスは、ステップ5において、例えばゴシッププロトコルを介して、それをすべての承認及び非承認ノードにブロードキャストする。各ノードは、ブロック105内のすべてのトランザクションを検証し、次いで、ブロックを台帳及び状態データベース(Vとしてマークされる)にコミットする。最後に、ノードのうちの1つが、トランザクションがコミットされたことか、又はトランザクションが台帳において無効又は有効としてマークされたかどうかの通知をクライアントに送信する(ステップ6)。 Once block 105 is created, the ordering service broadcasts it in step 5 to all approving and non-approving nodes, e.g., via a gossip protocol. Each node validates all transactions in block 105 and then commits the block to its ledger and state database (marked as V). Finally, one of the nodes sends a notification to the client that the transaction has been committed or whether the transaction has been marked as invalid or valid in the ledger (step 6).

図1は、検証フェーズの検証ワークフロー110を右側により詳細に示している。ワークフロー110は、ブロック105を受信するすべてのノード上で実行される4つのステップを示す。ゴシッププロトコルを介して順序付けサービス(又はリードノード)からトランザクションのブロック105を受信すると、ステップ1において、ノードは、ブロックの構文構造をチェックし、その署名を確認し、次いで、以下でより詳細に説明する様々な動作のパイプラインを介してそれを送信する。ステップ2では、ブロック内の各トランザクションが構文的にチェックされ、その署名が確認される。次いで、検証システムチェーンコード(validation system chaincode、VSCC)が、承認が検証され、関連付けられたチェーンコードの承認ポリシーが評価される各トランザクション上で実行される。トランザクションは、その承認ポリシーが満たされない場合、無効としてマークされる。 Figure 1 shows the validation workflow 110 of the validation phase in more detail on the right. The workflow 110 shows four steps executed on all nodes that receive the block 105. Upon receiving a block of transactions 105 from the ordering service (or lead node) via the gossip protocol, in step 1 the node checks the syntactic structure of the block, verifies its signature, and then sends it through a pipeline of various operations that are described in more detail below. In step 2, each transaction in the block is syntactically checked and its signature verified. A validation system chaincode (VSCC) is then run on each transaction where authorizations are verified and the authorization policies of the associated chaincode are evaluated. A transaction is marked as invalid if its authorization policies are not met.

ステップ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 block 105 or in a previous block) has already modified the same key, and therefore this transaction is marked as invalid.

最後のステップ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 hardware accelerator 210, according to an example. In one embodiment, node 200 is any computing system that performs a validation process when committing a transaction to the blockchain. For example, node 200 may be an authorizing or unauthorized node or peer, as shown in FIG. 1. In one embodiment, node 200 is a server or other computing system.

図2Aにおいて、ノード200Aは、CPU205、ハードウェアアクセラレータ210、及びメモリ235を含む。CPU205は、それぞれが任意の数の処理コアを含むことができる任意の数のプロセッサを表す。メモリ235は、揮発性メモリ、不揮発性メモリ(例えば、ハードディスクドライブ)、及びこれらの組み合わせを表す。示されるように、メモリ235は、ブロックチェーンのコミットされたトランザクションをリストする台帳240を記憶する。 In FIG. 2A, node 200A includes CPU 205, hardware accelerator 210, and memory 235. CPU 205 represents any number of processors, each of which may include any number of processing cores. Memory 235 represents volatile memory, non-volatile memory (e.g., a hard disk drive), and combinations thereof. As shown, memory 235 stores ledger 240, which lists committed transactions of the blockchain.

ハードウェアアクセラレータ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 hardware accelerator 210 includes various circuit elements for executing the verification workflow 110 illustrated in FIG. 1. In one embodiment, the hardware accelerator 210 is an integrated circuit. In another embodiment, the hardware accelerator 210 is a substrate (e.g., a printed circuit board (PCB), such as a PCIe card) on which one or more integrated circuits are implemented. In one embodiment, the integrated circuit is a field programmable gate array (e.g., a field programmable gate array (FPGA) or a system on a chip (SoC) that includes programmable logic. In this example, the various circuit blocks in the accelerator 210 are implemented with programmable logic. However, in another embodiment, the integrated circuit may be an application specific integrated circuit (ASIC) in which the circuit blocks of the accelerator 210 are implemented only in hardened circuitry. Using FPGAs and SoCs with programmable logic gives the accelerator 210 the flexibility to be reprogrammed if the verification process changes, while using ASICs may save space.

アクセラレータ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 accelerator 210 includes a network interface 215 for receiving Ethernet packets containing data related to transactions, a protocol processor 220 for reformatting the data, a block processor 225 for executing the validation workflow, and a register map 230 (reg_map) (e.g., a memory register) for storing the results of the validation. The protocol processor 220, the block processor 225, and the register map 230 are described in more detail below. In general, these hardware blocks work together to validate a block of transactions received. That is, the network interface 215 receives multiple packets containing data corresponding to a block of transactions. This data may be in a format that is not suitable for processing, so the protocol processor 220 can reformat and output the data for consumption by the block processor 225. Although the block processor 225 performs most of the steps in the validation workflow, some of these steps may be performed by the protocol processor 220 and the register map 230. Furthermore, because the ledger 240 is stored in memory 235 (which may not be directly accessible by the accelerator 210), the node 200A may rely on the CPU 205 to commit verified transactions to the ledger 240. That is, the accelerator 210 stores the verification results in the register map 230, which the CPU 205 can evaluate and then commit the transactions to the ledger. That is, in one embodiment, all transactions are committed to the ledger, but the verification flags store information about which transactions were valid and which were invalid. However, only successfully validated transactions are committed to the state database (described below). While most of the verification is performed in the hardware accelerator 210, committing the transactions to the ledger 240 may be performed by software running on the CPU 205.

図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 node 200A of FIG. 2A, except for the addition of network interface card (NIC) 245. In one embodiment, NIC 245 provides node 200B with the ability to determine which network traffic flows through accelerator 210 and which network traffic flows through NIC 245. In one embodiment, all traffic related to blockchain may be sent through accelerator 210, and received network traffic not related to blockchain is processed by NIC 245. In contrast, in node 200A, all network traffic received by node 200A (whether blockchain traffic or non-blockchain traffic) may be received at accelerator 210. For example, protocol processor 220 may forward network traffic related to validation to block processor 225, but forward all other traffic to CPU 205.

別の実施形態において、アクセラレータ210は、アクセラレータ210におけるトランザクションの検証に関連するネットワークトラフィックのみを受信する一方、他のすべてのトラフィック(承認要求などの他のタイプのブロックチェーントラフィックであるか、非ブロックチェーントラフィックであるかにかかわらず)は、NIC245によって受信され、処理される。 In another embodiment, accelerator 210 receives only network traffic related to validation of transactions at accelerator 210, while all other traffic (whether other types of blockchain traffic, such as approval requests, or non-blockchain traffic) is received and processed by NIC 245.

図2A又は図2Bのいずれにも示されていない更に別の実施形態では、アクセラレータ210は、CPU205の支援なしにすべてのブロックチェーン動作を実行し得る。その実施形態では、NIC245及びCPU205は、ブロックチェーンタスクを実行するために使用されないが、CPU205は、アクセラレータ210を構成又は制御するために使用され得る。このシナリオでは、全てのネットワークトラフィックは、ブロックチェーン関連パケットを処理するが他のパケットをCPU205へ/から転送するアクセラレータ210を通過する。 In yet another embodiment, not shown in either FIG. 2A or FIG. 2B, accelerator 210 may perform all blockchain operations without the assistance of CPU 205. In that embodiment, NIC 245 and CPU 205 are not used to perform blockchain tasks, but CPU 205 may be used to configure or control accelerator 210. In this scenario, all network traffic passes through accelerator 210, which processes blockchain-related packets but forwards other packets to and from CPU 205.

図3は、一例による、ハードウェアアクセラレータ内のプロトコルプロセッサとブロックプロセッサとの間のインターフェース300を例解する。この例では、インターフェース300は、ブロックデータ、トランザクションデータ(図3ではtxデータとラベル付けされている)、承認データ、読み取りセットデータ、及び書き込みセットデータをブロックプロセッサ225に伝送するために使用される。すなわち、プロトコルプロセッサ220は、トランザクションのブロックを検証するために使用される情報を含むイーサネット(登録商標)パケットを、ブロックチェーン内の他のノードから(例えば、順序付けサービス内のオーダラーから)受信する。次いで、プロトコルプロセッサ220は、ブロックプロセッサ225によって消費することができるように、データを再フォーマット/解析する。 Figure 3 illustrates an interface 300 between a protocol processor and a block processor in a hardware accelerator, according to one example. In this example, the interface 300 is used to transmit block data, transaction data (labeled tx data in Figure 3), acknowledgement data, read set data, and write set data to the block processor 225. That is, the protocol processor 220 receives Ethernet packets from other nodes in the blockchain (e.g., from an orderer in the ordering service) that contain information used to validate blocks of transactions. The protocol processor 220 then reformats/parses the data so that it can be consumed by the block processor 225.

図4は、一例による、パケットを解析して、ハードウェア処理のためにデータを準備するための方法400のフローチャートである。説明を容易にするために、方法400におけるブロックは、以下の図と並行して説明される。 Figure 4 is a flow chart of a method 400 for parsing packets and preparing data for hardware processing, according to one example. For ease of explanation, the blocks in method 400 are described in parallel with the following figures:

ブロック405において、アクセラレータ内のネットワークインタフェースは、トランザクションのブロックの別個のコンポーネントを含むパケットを受信する。ブロックは通常、単一のパケットで送信するには大きすぎるため(例えば、ブロックは1メガバイトを超える可能性がある)、ソフトウェアアプリケーションは、ネットワークプロトコル又はソフトウェアドライバに依存して、ブロックを複数のパケットにチャンク化する。しかしながら、ネットワークプロトコル/ドライバは、典型的には、データがブロック内でどのように構造化されるかについての知識を有しておらず、したがって、データは、典型的には、アドホック方式で伝送される。これは、ハードウェアアクセラレータが、受信されたパケットを解析し、トランザクションのブロックを再構築することを、不可能ではないにしても困難にする。しかしながら、本明細書の実施形態は、ハードウェアアクセラレータが、トランザクションのブロック内の異なるコンポーネントを再構築するために、パケットを解析することができるように、トランザクションのブロックを伝送するための技法を説明する。 At block 405, a network interface in the accelerator receives packets containing separate components of a block of transactions. Because the blocks are typically too large to send in a single packet (e.g., blocks can be over 1 megabyte), the software application relies on the network protocol or software driver to chunk the block into multiple packets. However, the network protocol/driver typically has no knowledge of how the data is structured within the block, and therefore the data is typically transmitted in an ad-hoc manner. This makes it difficult, if not impossible, for a hardware accelerator to parse the received packets and reconstruct the block of transactions. However, embodiments herein describe techniques for transmitting the block of transactions such that the hardware accelerator can parse the packets to reconstruct the different components within the block of transactions.

図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 block 505 of a transaction, according to one example. Specifically, FIG. 5A illustrates a communication system 500 in which a sender 515 (e.g., an orderer or other peer node in a blockchain) transmits packets 520 to a hardware accelerator 210 so that these packets can be parsed precisely so that a block message 505 can be reconstructed. To do so, software in the sender 515 splits the block message 505 into its separate block components 510, shown here as a header, transactions (TX) 1-5, and metadata. That is, rather than relying on a network protocol or driver to determine how to split the data in a block message 505 into separate packets, software on the sender 515 (which knows the structure of the block 505) can split the block into its components 510.

図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 sender 515 transmitting packets 520A-520G to a hardware accelerator 210 over a network, e.g., a private or public network such as the Internet. As shown, each packet 520 contains only one of the components 510, i.e., packet 520A contains the header of block 505, packets 520B-520F each contain one of the transactions, and packet 520G contains metadata for block 505. If software did not split block 505 into its components 510, the network protocol or driver might have sent a first packet containing the header and part of TX1, a second packet containing the remaining data of TX1 and part of TX2, and so on. This unpredictable branching of different components 510 within block 505 can make it difficult to design hardware accelerator 210 to parse the data so that block 505 can be reconstructed.

また、図5Aには示されていないが、送信者515は、コンポーネント510に関連付けられた署名された証明書を削除し得る。これらの証明書を使用して、ブロック505及びブロック内のトランザクションを検証し得る。しかしながら、これらの証明書(例えば、x509証明書)は大きく、これは、それらをアクセラレータ210に送信することが、かなりの量の帯域幅を必要とすることを意味する。一実施形態において、送信者515は、パケット520を形成し、次いでアクセラレータ210に送信される前に、ブロック505から証明書を除去する。代わりに、送信者515は、証明書をID(例えば、8ビットコード)で置き換えることができる。一実施形態では、送信者515は、証明書を別々に一度にアクセラレータ210に伝送し、アクセラレータ210は、次いで、後で取り出すために証明書をキャッシュに記憶することができる。このようにして、証明書がブロック505内の複数のコンポーネント510に関連付けられている場合、証明書は繰り返して、ではなく1回送信される。 5A, the sender 515 may also remove the signed certificates associated with the components 510. These certificates may be used to verify the blocks 505 and the transactions within the blocks. However, these certificates (e.g., x509 certificates) are large, which means that sending them to the accelerator 210 requires a significant amount of bandwidth. In one embodiment, the sender 515 removes the certificates from the blocks 505 before forming the packets 520 and then sending them to the accelerator 210. Instead, the sender 515 may replace the certificates with an ID (e.g., an 8-bit code). In one embodiment, the sender 515 transmits the certificates to the accelerator 210 separately at a time, which can then cache the certificates for later retrieval. In this way, if a certificate is associated with multiple components 510 in the block 505, the certificate is sent once, not repeatedly.

図5Bは、一例による、ブロック内の個々のコンポーネントを送信するためのパケット520を示す。520は、L2及びIP/UDPデータ、トランスポートヘッダ525、ブロックマシンプロトコルヘッダ530、及びブロックメッセージペイロード535を含む。トランスポートヘッダ525は、シーケンス番号(Seq)、肯定応答番号(Ack)、及び制御データ(Ctrl)を含むことができる。シーケンス番号は、パケットがブロック505を表すパケットのシーケンス内のどこにあるかを示す。肯定応答番号は、送信者515に返送するためのAckパケットを生成するときに、アクセラレータ210によって使用される。制御データは、アプリケーションレベルプロトコル障害及び受信機バッファステータスなどの情報を含むことができる。 FIG. 5B illustrates a packet 520 for transmitting an individual component in a block, according to one example. 520 includes L2 and IP/UDP data, a transport header 525, a block machine protocol header 530, and a block message payload 535. The transport header 525 may include a sequence number (Seq), an acknowledgement number (Ack), and control data (Ctrl). The sequence number indicates where the packet is in the sequence of packets representing the block 505. The acknowledgement number is used by the accelerator 210 when generating an Ack packet to send back to the sender 515. The control data may include information such as application level protocol failures and receiver buffer status.

ブロックマシンプロトコルヘッダ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 payload 535 is a block header, a transaction, or metadata. The annotation points out the location of the important data. For example, the annotation may include a pointer to relevant data in the packet 520 (e.g., where specific data in the payload 535 can be found) and a locator that points to data in a cache or in a different packet (but in the same block). In one embodiment, the locator in the annotation is used to mark the ID of the packet 520. The payload 535 may include data corresponding to a specific component 510 being sent in the packet, i.e., metadata from the block 505.

各パケット520はブロック505のコンポーネント510のうちの1つを含むため、これは、アクセラレータ210がブロックのすべてのパケット520を受信する前にデータを処理し始めることができるという利点を提供する。すなわち、ソフトウェアがすべてのパケットを受信し、次いで検証のためにブロック505を再構築するのを待つ代わりに、アクセラレータ210は、トランザクションが入ってきたときにトランザクションを処理することができる。例えば、プロトコルプロセッサは、TX2を含むパケット520Cがアクセラレータ210において受信される前に、TX1に対応するパケット520Bを解析することができる。したがって、アクセラレータ210は、トランザクションが再構築され、検証され得る前にすべてのパケットが受信されなければならないソフトウェアソリューションよりもはるかに早くトランザクションを処理し始めることができる。 Because each packet 520 contains one of the components 510 of the block 505, this provides the advantage that the accelerator 210 can begin processing data before receiving all packets 520 of the block. That is, instead of waiting for software to receive all packets and then reconstruct the block 505 for validation, the accelerator 210 can process transactions as they come in. For example, the protocol processor can parse packet 520B corresponding to TX1 before packet 520C containing TX2 is received at the accelerator 210. Thus, the accelerator 210 can begin processing transactions much sooner than a software solution in which all packets must be received before the transaction can be reconstructed and validated.

図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 protocol processor 220 in a hardware accelerator, according to an example. As shown, a data packet 520 is received at a packet filter 610 that parses a level 4-7 (L4-L7) packet header (e.g., block machine protocol header 530) to extract a message type and annotations. The message type may include block start, block metadata, transaction, etc. The message payload annotations may include block header location, block signature location, block ID, transaction data start, channel name, transaction ID, chaincode name, creator certificate authority (CA) ID, transaction action, transaction CA ID, contract name, contract input, approver action, read/write set, approver list, transaction signature, orderer CA ID, orderer signature, certificate ID, certificate public key data, valid since information, valid through information, etc. The packet filter 610 also identifies the sequence number in the transport header and forwards this number to the response generator 605, which sends a response packet (e.g., an acknowledgment packet) back to the sender (e.g., the orderer).

パケットフィルタ610は、メッセージタイプ、注釈、及びパケットペイロードを、注釈に基づいてメッセージペイロードを処理し、ブロックプロセッサ225のための関連データを抽出するブロック抽出器615に転送する。ブロック抽出器615はまた、応答生成器605にメッセージ有効信号を提供し、それにより、生成器605は、ブロック及びそのトランザクションが有効であるか無効であるかを送信者に通知することができる。ブロックプロセッサ225の詳細は、方法400の残りの部分及び以下の図において説明される。 The packet filter 610 forwards the message type, annotation, and packet payload to the block extractor 615, which processes the message payload based on the annotation and extracts relevant data for the block processor 225. The block extractor 615 also provides a message valid signal to the response generator 605, so that the generator 605 can inform the sender whether the block and its transaction are valid or invalid. Details of the block processor 225 are described in the remainder of the method 400 and in the following figures.

方法400に戻ると、ブロック410において、プロトコルプロセッサ内のブロック抽出器は、パケット内のIDを使用して、パケットに対応する署名された証明書を識別する。上述したように、送信者は、ブロックを複数のパケットでハードウェアアクセラレータに伝送する前に、ブロックから証明書を取り除き得る。これは、証明書が大きく、めったに変更されないために行われ得る。したがって、証明書を参照するパケット内のはるかに小さいID又はキーで証明書を置き換えることは、かなりの帯域幅を節約し、トランザクションのブロック内の各コンポーネントが単一のパケットで送信され得ることを確実にし得る。 Returning to method 400, at block 410, a block extractor in the protocol processor uses the ID in the packet to identify the signed certificate that corresponds to the packet. As mentioned above, the sender may strip the certificate from the block before transmitting the block to the hardware accelerator in multiple packets. This may be done because the certificates are large and rarely change. Thus, replacing the certificate with a much smaller ID or key in the packet that references the certificate may save significant bandwidth and ensure that each component in a block of a transaction can be transmitted in a single packet.

しかしながら、パケットが受信されると、ブロック抽出器は、ブロック(及びブロック内のトランザクション)を検証し、ブロック及びトランザクションのシンタックスが正しいことを確実にするために、証明書を必要とする場合がある。したがって、ブロック抽出器はコンポーネントを再構築することができ、これは、ブロック抽出器が証明書を識別し、取り出すことを意味する。 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 block extractor 615, according to one embodiment. As shown, the block extractor 615 includes a data inserter 705 that receives the packet payload and annotations and identifies the certificate (or certificates) corresponding to the payload. For example, if the payload is block metadata, the payload may include an ID corresponding to the certificate of the orderer that prepared the block. If the payload includes a transaction, the payload may include an ID corresponding to the client that submitted the transaction and one or more IDs corresponding to the approving nodes that approved the transaction. Thus, the data inserter 705 may identify multiple IDs in the payload.

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 method 400, at block 415, the block extractor 615 reconstructs the separate components of the block. That is, as each payload is received, the block extractor 615 can extract the corresponding certificate. This is shown in FIG. 7, where the data inserter 705 transmits the extracted certificate (or certificates) along with other data in the payload to the data extractor 715.

データ抽出器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 time 1, the data extractor 715 may reconstruct the header of the block using the first received packet, at time 2, the data extractor 715 may reconstruct the first transaction in the block using the second received packet, and so on. Thus, the block extractor 615 may be pipelined such that different components within a block may be executed in parallel at different stages (e.g., different circuit modules) within the extractor 615.

ブロック420において、ハッシュ計算器720は、ブロック内のセパレータコンポーネントのハッシュを計算する。一実施形態では、ハッシュ計算器720は、ブロック全体、ブロックのあらゆるトランザクション、及び各トランザクションのあらゆる承認に対するハッシュを生成する。ハッシュ計算器720は、これらのハッシュを異なる時間に生成し得る。例えば、ハッシュ計算器720は、トランザクションに対応するパケットを受信したときに、特定のトランザクションに対するハッシュ(及びそのトランザクションに関連付けられたすべての承認に対するハッシュ)を生成することができる。しかしながら、ハッシュ計算器720は、ブロックについてのすべてのパケットを受信した後、ブロック全体に対するハッシュを計算するのを待つ場合がある。 At block 420, hash calculator 720 calculates a hash of the separator components in the block. In one embodiment, hash calculator 720 generates a hash for the entire block, every transaction in the block, and every acknowledgement for each transaction. Hash calculator 720 may generate these hashes at different times. For example, hash calculator 720 may generate a hash for a particular transaction (and hashes for all acknowledgements associated with that transaction) when it receives a packet corresponding to the transaction. However, hash calculator 720 may wait to calculate a hash for the entire block after it has received all packets for the block.

ブロック425において、ハッシュチェッカ725は、ハッシュ計算器720によって計算されたハッシュがパケット内のハッシュと一致するかどうかを判定する。すなわち、送信者によって伝送されたパケットは、ハッシュ計算器720によって生成されたハッシュと比較することができる以前に計算されたハッシュ(又は少なくともハッシュへのポインタ)を含み得る。例えば、送信者は、ブロック、ブロック内の各トランザクション、及びトランザクションにおける各承認に対するハッシュを計算し、それらのハッシュをアクセラレータ210に伝送し得る。これらのハッシュがハッシュチェッカ725によって生成されたローカルハッシュと一致する場合、これは、メッセージが有効であり、ブロック及びトランザクションのための適切なシンタックスが従われたことを意味する。ハッシュが一致しない場合、方法はブロック445に進み、ハードウェアアクセラレータは、受信されたデータがシンタックスエラーを有することを示す。一実施形態では、ハードウェアアクセラレータは、検証プロセスが失敗したことを示す応答メッセージを送信者に送信する。 At block 425, hash checker 725 determines whether the hash calculated by hash calculator 720 matches the hash in the packet. That is, the packet transmitted by the sender may include a previously calculated hash (or at least a pointer to a hash) that can be compared to the hash generated by hash calculator 720. For example, the sender may calculate hashes for the block, each transaction in the block, and each acknowledgement in the transaction, and transmit those hashes to accelerator 210. If these hashes match the local hash generated by hash checker 725, this means that the message is valid and the proper syntax for the block and transactions was followed. If the hashes do not match, the method proceeds to block 445, where the hardware accelerator indicates that the received data has a syntax error. In one embodiment, the hardware accelerator sends a response message to the sender indicating that the validation process failed.

ハッシュが、受信されたハッシュと一致すると仮定すると、方法400は、ブロック430に進み、ハードウェアアクセラレータは、受信されたデータが正常に解析されたことを示す。一実施形態では、図6の応答生成器605は、トランザクションのブロックが、プロトコルプロセッサ220によって正常に受信され、処理されたことを示す応答又は肯定応答(acknowledge、ACK)メッセージを送信者に伝送する。 Assuming the hash matches the received hash, method 400 proceeds to block 430 where the hardware accelerator indicates that the received data was successfully parsed. In one embodiment, response generator 605 of FIG. 6 transmits a response or acknowledgement (ACK) message to the sender indicating that the block of the transaction was successfully received and processed by protocol processor 220.

ブロック435において、タスクジェネレータ730は、検証プロセスを完了するために、ブロックプロセッサに対するタスクを生成する。一実施形態では、タスクジェネレータ730は、ブロックタスク、トランザクションタスク、及び承認者タスクを生成する。ブロックタスクは、ブロックID、ブロック署名(例えば、ブロックを生成したオーダラーの証明書)などを含み得る。トランザクションタスクは、トランザクションID、トランザクション署名(例えば、トランザクションを生成したクライアントの証明書)、トランザクション読み取り/書き込みセットなどを含み得る。一実施形態では、タスクジェネレータ730は、ブロック内の各トランザクションに対するトランザクションタスクを生成する。タスクジェネレータ730はまた、トランザクションにおける各承認に対する承認者タスクを生成することができる。すなわち、各トランザクションはいくつかの承認を受け取ることができるため、タスクジェネレータ730は、それらの承認の各々に対するタスクを生成することができる。 At block 435, the task generator 730 generates tasks for the block processor to complete the validation process. In one embodiment, the task generator 730 generates block tasks, transaction tasks, and approver tasks. The block tasks may include a block ID, a block signature (e.g., the certificate of the orderer that generated the block), etc. The transaction tasks may include a transaction ID, a transaction signature (e.g., the certificate of the client that generated the transaction), a transaction read/write set, etc. In one embodiment, the task generator 730 generates a transaction task for each transaction in the block. The task generator 730 may also generate approver tasks for each approval in the transaction. That is, since each transaction may receive several approvals, the task generator 730 may generate a task for each of those approvals.

ブロック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 method 800 for validating a transaction before committing the transaction to a blockchain ledger, according to one example. For ease of explanation, different stages in the method 800 are described in conjunction with FIGS. 9-11 below. Furthermore, the stages in the method 800 correlate to steps 1-4 of the validation workflow 110 illustrated in FIG. 1.

方法800は、ハードウェアアクセラレータが、例えば、順序付けサービスから、台帳にコミットされ得る前に検証される必要があるトランザクションのブロックをすでに受信していると仮定する。更に、方法800は、プロトコルプロセッサがブロックシンタックスチェック(例えば、図1の「blkシンタックスチェック」)及びトランザクションシンタックスチェック(例えば、図1の「txシンタックスチェック」)を実行して、検証を実行するために必要なすべてのデータが受信されたことを確認したと仮定する。 Method 800 assumes that the hardware accelerator has already received, e.g., from an ordering service, a block of transactions that needs to be validated before they can be committed to the ledger. Method 800 further assumes that the protocol processor has performed a block syntax check (e.g., "blk syntax check" in FIG. 1) and a transaction syntax check (e.g., "tx syntax check" in FIG. 1) to ensure that all data necessary to perform the validation has been received.

ステージ805において、ハードウェアアクセラレータは、トランザクションのブロック上の署名を確認する。より具体的には、ブロックプロセッサは、図3に示される情報をプロトコルプロセッサから受信し、ブロック確認を実行することができる。図9に示すように、ブロックプロセッサ225は、2つのハードウェアサブモジュール:ブロック確認905及びブロック検証910を含む。ブロック確認905は、ブロック上のオーダラー署名を確認するための楕円曲線デジタル署名アルゴリズム(elliptic curve digital signature algorithm、ECDSA)エンジン920を含む。言い換えれば、ECDSAエンジン920は、ブロック内の受信された署名を、オーダラーのための既知の署名(例えば、証明書)と比較して、それらが一致することを確実にする。このようにして、ブロック確認905は、トランザクションのブロックが認められたノードから来たことを確かめることができる。ECDSAエンジン920が示されているが、任意の好適な署名アルゴリズムエンジンを使用することができる。 At stage 805, the hardware accelerator verifies the signature on the block of transactions. More specifically, the block processor can receive the information shown in FIG. 3 from the protocol processor and perform block verification. As shown in FIG. 9, the block processor 225 includes two hardware submodules: block verification 905 and block validation 910. Block verification 905 includes an elliptic curve digital signature algorithm (ECDSA) engine 920 to verify the orderer signature on the block. In other words, the ECDSA engine 920 compares the received signature in the block with a known signature (e.g., a certificate) for the orderer to ensure that they match. In this way, the block verification 905 can verify that the block of transactions came from a recognized node. Although an ECDSA engine 920 is shown, any suitable signature algorithm engine can be used.

オーダラー署名を含むことに加えて、ブロック確認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 method 800, at stage 810, the hardware accelerator verifies multiple transactions in a block. In FIG. 9, this function is performed by block verification 910. That is, while block confirmation 905 ensures that a block was received by a known orderer, block verification 910 verifies individual transactions in a block. To do this, block verification 910 receives transaction data, acknowledgement data, read set data, and write set data from a protocol processor (not shown in FIG. 9). Block verification 910 then outputs block verification data, including verification results such as block number, valid/invalid transaction flags, and latency.

一実施形態では、ブロック確認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, block processor 225 may process the first block of transactions in block confirmation 905 (pipeline stage 1), while block verification 910 processes the second block of transactions (pipeline stage 2). In other words, block confirmation 905 can use ECDSA engine 920 to ensure that an authorized orderer has transmitted the first block at the same time that block verification 910 verifies the individual transactions in the second block.

ブロックプロセッサ225はまた、ブロック確認905及びブロック検証910から受信した信号を監視することによって、ブロックレベル及びトランザクションレベルの統計値を収集するブロックモニタ915も含む。例えば、ブロックモニタ915は、トランザクションのブロックを検証するのに必要な時間若しくは待ち時間、又はブロックプロセッサ225のスループット(例えば、単位時間当たりに処理されるブロックの数)を判定し得る。 Block processor 225 also includes a block monitor 915 that collects block-level and transaction-level statistics by monitoring signals received from block confirmation 905 and block verification 910. For example, block monitor 915 may determine the time or latency required to verify a block of transactions, or the throughput of block processor 225 (e.g., the number of blocks processed per unit time).

更に、図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 method 800 correspond to pipeline stages 2a, 2b, and 2c of FIG. 10, which illustrates a more detailed view of block verification 910 of FIG. 9.

ステージ815において、ブロック検証910における第1のパイプラインステージ2aは、各トランザクションの署名を確認する。図10に示すように、ステージ2aは、各々がECDSAエンジン1035を含む複数のトランザクション確認ブロック1005を含む。これらのエンジン1035は、トランザクションのクライアント(又は作成者)の署名を確認する。すなわち、ECDSAエンジン1035は、受信された署名を、txデータ及び作成者の公開キーペアに基づいて計算された署名と比較することによって、トランザクションが既知のクライアントによって署名されたことを確実にする。 In stage 815, the first pipeline stage 2a in block validation 910 verifies the signature of each transaction. As shown in FIG. 10, stage 2a includes multiple transaction verification blocks 1005, each of which includes an ECDSA engine 1035. These engines 1035 verify the client (or creator) signature of the transaction. That is, the ECDSA engine 1035 ensures that the transaction was signed by a known client by comparing the received signature with a signature calculated based on the tx data and the creator's public key pair.

複数のトランザクション確認ブロック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 method 800, in stage 820, block validation 910 verifies the authorization of each transaction using the authorization policy. As shown in FIG. 10, pipeline stage 2b includes multiple transaction VSCC blocks 1010, each of which includes multiple ECDSA engines 1015 (or any other type of signature verification engine) and authorization policy evaluator 1020. Each transaction VSCC block 1010 verifies the authorization of a particular transaction. To do so, the transaction VSCC block 1010 receives authorization data including an approver ID and verification data. Because a client transaction may receive multiple authorizations (as shown in FIG. 1), each ECDSA engine 1015 can evaluate one of the authorizations in parallel. That is, if transaction A receives two approvals, ECDSA engine 1015A can verify that the first approval was signed by an authorized approval node, while ECDSA engine 1015B verifies that the second approval was signed by an authorized approval node. Again, the number of ECDESA engines 1015 in each block 1010 is a design choice.

一実施形態では、承認ポリシー評価器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 method 800, in stage 825, block verify 910 performs a version check and commits the write key to state database 1030. This is performed by stage 2c, which includes a transactional MVCC write block 1025 communicatively coupled to state database 1030 and a register map (not shown in FIG. 10). In addition, the register map is optionally coupled to a CPU (not shown) in the node. In one embodiment, transactional MVCC write block 1025 looks up the read key from state database 1030, performs a version check, and if verified, commits the updated write key of the valid transaction to database 1030. To do so, transactional MVCC write block 1025 receives read set data (each element includes a read key-version pair) and write set data (each element includes a write key-value pair) from the protocol processor. In one embodiment, state database 1030 includes an internal locking mechanism to not allow reads of the key currently being written (or updated).

図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 method 800, at stage 830, block verify 910 stores the results of performing the verification process in a register (e.g., register map 230). As shown in FIG. 11, the register map receives block verification data from block verify 910, which may include block number, valid/invalid transaction flags, latency (measured by a block monitor), etc. The verification results are written to the register map, and CPU 205 can access the verification results using an AXI-lite or PCIe interface. In one embodiment, a new verification result cannot be written to register map 230 until the currently stored verification result is read by CPU 205. Additionally, FIG. 11 illustrates system 1100 in which register map 230 in a hardware accelerator is accessible by CPU 205, as described above, but the accelerator may not use CPU 205 and instead may complete the verification process without the assistance of software running on CPU 205.

ステージ835において、CPU(又はハードウェアアクセラレータ)は、トランザクションが有効であるか無効であるかをクライアントに通知する。すなわち、CPUは、検証結果を評価して、トランザクションのブロック内の各個々のトランザクションが検証されたかどうかを判定することができる。次いで、クライアントは、無効なトランザクションを再提出することを選択し得る。 At stage 835, the CPU (or hardware accelerator) informs the client whether the transaction is valid or invalid. That is, the CPU can evaluate the validation results to determine whether each individual transaction in the block of transactions was validated. The client can then choose to resubmit the invalid transaction.

ステージ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.
トランザクションの前記ブロックが、ブロックヘッダ、複数のトランザクション、及びメタデータを含み、前記ブロックヘッダ、前記複数のトランザクションの各々、及び前記メタデータが、前記複数のパケットのうちの別個のパケットで送信される、請求項1に記載のコンピューティングシステム。 The computing system of claim 1, wherein the block of transactions includes a block header, a plurality of transactions, and metadata, and the block header, each of the plurality of transactions, and the metadata are transmitted in separate packets of the plurality of packets. 前記複数のパケットが、前記ブロック又は前記複数のトランザクションに対応する署名された証明書を含まない、請求項2に記載のコンピューティングシステム。 The computing system of claim 2, wherein the packets do not include signed certificates corresponding to the blocks or the transactions. 前記ハードウェアアクセラレータが、
前記ブロックチェーン内の認められたノードに対応する前記署名された証明書のローカルコピーを記憶するアイデンティティキャッシュと、
前記複数のパケットに含まれる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.
前記ハードウェアアクセラレータが、システムオンチップ(SoC)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)のうちの少なくとも1つを含む、請求項1又は6に記載のコンピューティングシステム。 The computing system of claim 1 or 6, wherein the hardware accelerator comprises at least one of a system on chip (SoC), a field programmable gate array (FPGA), or an application specific integrated circuit (ASIC). 方法であって、
ハードウェアアクセラレータにおいて、ブロックチェーンの台帳にコミットされるトランザクションのブロックに対応する複数のパケットを受信することと、
前記ハードウェアアクセラレータにおいて、トランザクションの前記ブロック内の異なるコンポーネントのハッシュを計算することと、
前記ハードウェアアクセラレータにおいて、前記ハッシュが、以前に計算されたハッシュと一致すると判定することと、
前記ハードウェアアクセラレータにおいて、トランザクションの前記ブロックを検証するためのタスクを生成することと、を含む、方法。
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.
トランザクションの前記ブロックが、ブロックヘッダ、複数のトランザクション、及びメタデータを含み、前記ブロックヘッダ、前記複数のトランザクションの各々、及び前記メタデータが、前記複数のパケットのうちの別個のパケットで送信される、請求項11に記載の方法。 The method of claim 11, wherein the block of transactions includes a block header, a plurality of transactions, and metadata, and the block header, each of the plurality of transactions, and the metadata are transmitted in separate packets of the plurality of packets. 前記複数のパケットが、前記ブロック又は前記複数のトランザクションに対応する署名された証明書を含まない、請求項12に記載の方法。 The method of claim 12, wherein the packets do not include signed certificates corresponding to the blocks or the 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.
JP2023523289A 2020-10-28 2021-06-22 Blockchain Machine Network Acceleration Engine Active JP7674475B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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