[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20230097062A - Blockchain Machine Network Acceleration Engine - Google Patents

Blockchain Machine Network Acceleration Engine Download PDF

Info

Publication number
KR20230097062A
KR20230097062A KR1020237016456A KR20237016456A KR20230097062A KR 20230097062 A KR20230097062 A KR 20230097062A KR 1020237016456 A KR1020237016456 A KR 1020237016456A KR 20237016456 A KR20237016456 A KR 20237016456A KR 20230097062 A KR20230097062 A KR 20230097062A
Authority
KR
South Korea
Prior art keywords
block
transaction
packets
hardware accelerator
blockchain
Prior art date
Application number
KR1020237016456A
Other languages
Korean (ko)
Inventor
해리스 자바이드
지 양
순다라라자라오 모한
고든 존 브렙너
Original Assignee
자일링크스 인코포레이티드
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 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20230097062A publication Critical patent/KR20230097062A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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)

Abstract

본 출원의 실시예는 블록체인 머신 또는 노드를 위한 하드웨어 가속기(예를 들어, 네트워크 가속 엔진)를 설명한다. 하드웨어 가속기는 검증 프로세스를 수행하기 위한 데이터를 생성하기 위해 트랜잭션 블록의 개별 컴포넌트가 함유된 패킷을 파싱한다. 소프트웨어를 사용할 때 발생하는 레이턴시를 피하기 위해, 본 출원의 실시예는 소프트웨어 개입 없이 가속기의 하류 컴포넌트에 의해 소비될 수 있게 패킷을 파싱하고 데이터를 준비하는 하드웨어 가속기의 프로토콜 프로세서를 설명한다. 그 후, 이러한 하류 컴포넌트는 허가형 블록체인의 원장에 이들 트랜잭션이 커밋(즉, 추가)되기 전에 하나 이상의 트랜잭션을 검증하기 위해 검증 동작을 수행할 수 있다.Embodiments of the present application describe hardware accelerators (eg, network acceleration engines) for blockchain machines or nodes. The hardware accelerator parses the packets containing the individual components of the transaction block to generate data for performing the verification process. To avoid latency introduced when using software, embodiments of the present application describe a hardware accelerator's protocol processor that parses packets and prepares data for consumption by downstream components of the accelerator without software intervention. These downstream components can then perform verification operations to verify one or more transactions before committing (i.e. adding) those transactions to the ledger of the permissioned blockchain.

Description

블록체인 머신 네트워크 가속 엔진Blockchain Machine Network Acceleration Engine

본 개시의 예는 일반적으로 블록체인의 노드에 대한 하드웨어 가속기에 관한 것이다.Examples of this disclosure relate generally to hardware accelerators for nodes in a blockchain.

하이퍼레저 패브릭(Hyperledger Fabric)은 허가형 블록체인을 위한 오픈 소스 엔터프라이즈 등급 구현 플랫폼이다. 하이퍼레저 패브릭의 트랜잭션 유동은 실행-정렬-검증 모델을 따르며, 이 모델에서는 트랜잭션이 먼저 실행된 다음 블록으로 정렬되고 최종적으로 검증되고 (그때까지 커밋된(committed) 블록의 전역 상태를 유지하기 위한 상태 데이터베이스와 함께) 원장에 커밋된다. 결과적으로, 패브릭 네트워크에는 피어, 정렬자, 클라이언트 등과 같은 다양한 유형의 노드가 포함되고, 각각의 노드에는 MSP(Membership Service Provider)가 제공한 ID가 존재한다.Hyperledger Fabric is an open-source, enterprise-grade implementation platform for permissioned blockchains. Transaction flow in Hyperledger Fabric follows a run-sort-verify model, in which transactions are executed first, then sorted into blocks, and finally verified (state to maintain the global state of blocks committed until then). along with the database) are committed to the ledger. As a result, the fabric network includes various types of nodes such as peers, aligners, clients, and the like, and each node has an ID provided by a Membership Service Provider (MSP).

(하이퍼레저 패브릭, 쿼럼(Quorum), 코다(Corda) 등 같은) 허가형 블록체인은 액세스가 그 일부가 될 필요가 있는 블록체인 네트워크이다. 이러한 블록체인은 트랜잭션이 블록체인의 원장에 추가되기 전에 검증되어야 한다. 그러나, 검증 프로세스는 특정 노드에서 수행되어야 하며, 다수의 트랜잭션을 검증해야 할 때 이러한 노드에서 병목 현상이 자주 발생한다. 이 병목 현상은 블록체인이 새로운 트랜잭션을 신속하게 커밋하는 능력을 제한할 수 있다.A permissioned blockchain (like Hyperledger Fabric, Quorum, Corda, etc.) is a blockchain network that requires access to be part of it. These blockchains need to be verified before transactions are added to the blockchain's ledger. However, the verification process has to be performed on a specific node, and when a large number of transactions need to be verified, these nodes often become a bottleneck. This bottleneck can limit the blockchain's ability to commit new transactions quickly.

일 실시예는 프로세서, 블록체인의 원장을 저장하는 메모리 및 하드웨어 가속기를 포함하는 컴퓨팅 시스템을 설명한다. 따라서, 하드웨어 가속기는 원장에 커밋될 트랜잭션 블록에 대응하는 복수의 패킷을 수신하고, 트랜잭션 블록의 상이한 컴포넌트들에 대한 해시를 생성하고, 해시가 이전에 계산된 해시와 일치한다고 결정하면 작업을 생성하여 하드웨어 가속기의 트랜잭션 블록을 검증하도록 구성된다. 또한, 프로세서 또는 하드웨어 가속기 중 하나는 트랜잭션 블록이 유효하다고 결정하면, 트랜잭션 블록을 원장에 커밋하도록 구성된다.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 receives multiple packets corresponding to a block of transactions to be committed to the ledger, generates hashes for the different components of the block of transactions, and if it determines that the hashes match previously computed hashes, creates a task to It is configured to verify the transaction block of the hardware accelerator. Further, if one of the processor or hardware accelerator determines that the transaction block is valid, it is configured to commit the transaction block to the ledger.

본 출원에 설명된 또 다른 실시예는 프로세서, 블록체인의 원장을 저장하는 메모리, 및 하드웨어 가속기로서, 원장에 커밋될 트랜잭션 블록을 수신하고, 블록의 서명을 확인하고, 블록의 각각의 트랜잭션을 검증하고, 트랜잭션의 검증 결과를 저장하도록 구성된, 상기 하드웨어 가속기를 포함하는 컴퓨팅 시스템이다. 또한, 프로세서 또는 하드웨어 가속기 중 하나는 트랜잭션을 원장에 커밋하도록 구성된다.Another embodiment described in this application is a processor, a memory that stores a ledger of a blockchain, and a hardware accelerator that receives a block of transactions to be committed to the ledger, verifies the signature of the block, and verifies each transaction in the block. and a computing system including the hardware accelerator configured to store a verification result of a transaction. Additionally, either the processor or hardware accelerator is configured to commit the transaction to the ledger.

본 출원에 설명된 또 다른 실시예는 하드웨어 가속기에서 블록체인의 원장에 커밋될 트랜잭션 블록에 대응하는 복수의 패킷을 수신하는 단계, 하드웨어 가속기에서 트랜잭션 블록 내의 상이한 컴포넌트들에 대한 해시를 계산하는 단계, 하드웨어 가속기에서 해시가 이전에 계산된 해시와 일치한다는 것을 결정하는 단계 및 하드웨어 가속기에서 트랜잭션 블록을 검증하는 작업을 생성하는 단계를 포함하는 방법이다.Another embodiment described in this application includes receiving a plurality of packets corresponding to a transaction block to be committed to a ledger of a blockchain at a hardware accelerator, calculating hashes for different components within the transaction block at the hardware accelerator, A method comprising determining at the hardware accelerator that the hash matches a previously computed hash and generating a task at the hardware accelerator to verify the block of transactions.

위에서 언급된 특징을 상세히 이해할 수 있도록, 위에서 간략히 요약된 내용의 보다 구체적인 설명은 예시적인 구현을 참조할 수 있으며, 이러한 예시적인 구현 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 단지 전형적인 예시적인 구현을 예시하고 따라서 그 범위를 제한하는 것으로 고려되어서는 안된다는 점에 유의해야 한다.
도 1은 일 예에 따른 허가형 블록체인에 대응하는 타이밍 차트이다.
도 2a 및 도 2b는 일 예에 따른 하드웨어 가속기를 갖는 블록체인의 노드 블록도이다.
도 3은 일 예에 따른 하드웨어 가속기에서 프로토콜 프로세서와 블록 프로세서 사이의 인터페이스를 예시한다.
도 4는 일 예에 따른 하드웨어 처리를 위한 데이터를 준비하기 위해 패킷을 파싱하기 위한 흐름도이다.
도 5a는 일 예에 따른 트랜잭션 블록의 각각의 컴포넌트에 대해 개별 패킷을 송신하는 것을 예시한다.
도 5b는 일 예에 따른 블록 내의 개별 컴포넌트를 발신하기 위한 패킷을 예시한다.
도 6은 예에 따른 하드웨어 가속기의 프로토콜 프로세서의 블록도이다.
도 7은 예에 따른 프로토콜 프로세서의 블록 추출기의 블록도이다.
도 8은 일 예에 따른 트랜잭션을 블록체인 원장에 커밋하기 전에 트랜잭션을 검증하기 위한 흐름도이다.
도 9는 일 예에 따른 블록 프로세서의 블록도이다.
도 10은 일 예에 따른 블록 검증의 블록도이다.
도 11은 일 예에 따른 하드웨어 가속기의 레지스터와 CPU 사이의 통신을 예시한다.
In order to provide a detailed understanding of the above-mentioned features, a more detailed description of what is briefly summarized above may refer to example implementations, some of which are illustrated in the accompanying drawings. However, it should be noted that the accompanying drawings merely illustrate typical example implementations and thus should not be considered limiting of their scope.
1 is a timing chart corresponding to a permissioned blockchain according to an example.
2A and 2B are node block diagrams of a blockchain having a hardware accelerator according to an example.
3 illustrates an interface between a protocol processor and a block processor in a hardware accelerator according to an example.
4 is a flow diagram for parsing packets to prepare data for hardware processing according to an example.
5A illustrates sending individual packets for each component of a transaction block according to one example.
5B illustrates packets for sending individual components within a block according to an example.
6 is a block diagram of a protocol processor of a hardware accelerator according to an example.
7 is a block diagram of a block extractor of a protocol processor according to an example.
8 is a flow diagram for verifying a transaction before committing the transaction to a blockchain ledger according to an example.
9 is a block diagram of a block processor according to an example.
10 is a block diagram of block verification according to an example.
11 illustrates communication between a register of a hardware accelerator and a CPU according to an example.

이하에서 도면을 참조하여 다양한 특징을 설명한다. 도면은 축척에 따라 그려질 수 있거나 그렇지 않을 수 있으며 유사한 구조 또는 기능의 요소가 도면 전체에 걸쳐 유사한 참조 번호로 표현된다는 점에 유의해야 한다. 도면은 단지 특징의 설명을 용이하게 하기 위한 것임에 유의해야 한다. 이들은 설명에 대한 철저한 설명 또는 청구 범위에 대한 제한을 의도하지 않는다. 또한, 예시된 예는 제시된 모든 양태 또는 이점을 가질 필요는 없다. 특정 예와 관련하여 설명된 양태 또는 이점은 반드시 그 예에 제한되지는 않으며, 그렇게 예시되지 않거나 그렇게 명시적으로 설명되지 않더라도 임의의 다른 예에서 실시될 수 있다.Hereinafter, various features will be described with reference to the drawings. It should be noted that the drawings may or may not be drawn to scale and that elements of like structure or function are represented by like reference numbers throughout the drawings. It should be noted that the drawings are only for facilitating description of features. They are not intended to be exhaustive of the description or limiting of the scope of the claims. Moreover, the illustrated examples need not have all of the aspects or advantages presented. An aspect or advantage described with respect to a particular example is not necessarily limited to that example, and may be practiced in any other example even if not so illustrated or so explicitly described.

본 출원의 실시예는 블록체인 머신 또는 노드를 위한 하드웨어 가속기(예를 들어, 네트워크 가속 엔진 또는 컴퓨팅 가속 엔진)를 설명한다. 하드웨어 가속기는 검증 프로세스를 수행하기 위한 데이터를 생성하기 위해 트랜잭션 블록의 개별 컴포넌트가 함유된 패킷을 파싱한다. 즉, 네트워크 프로토콜(예를 들어, TCP(Transmission Control Protocol))을 사용하여 송신되는 데이터는 전형적으로 패킷을 먼저 소프트웨어에 의해 처리하지 않고서는 하드웨어 가속기에 의해 사용되기에는 적합하지 않다. 소프트웨어를 사용할 때 발생하는 레이턴시를 피하기 위해, 본 출원의 실시예는 소프트웨어 개입 없이 가속기의 하류 컴포넌트에 의해 소비될 수 있게 패킷을 파싱하고 데이터를 준비하는 하드웨어 가속기의 프로토콜 프로세서를 설명한다. 그 후, 이러한 하류 컴포넌트는 검증 동작을 수행하여 해당 트랜잭션이 허가형 또는 비허가 블록체인의 원장에 커밋(즉, 추가)되기 전에 하나 이상의 트랜잭션을 검증할 수 있다.Embodiments of the present application describe hardware accelerators (eg, network acceleration engines or compute acceleration engines) for blockchain machines or nodes. The hardware accelerator parses the packets containing the individual components of the transaction block to generate data for performing the verification process. That is, data transmitted using a network protocol (eg, Transmission Control Protocol (TCP)) is typically not suitable for use by a hardware accelerator without first processing the packet by software. To avoid latency introduced when using software, embodiments of the present application describe a hardware accelerator's protocol processor that parses packets and prepares data for consumption by downstream components of the accelerator without software intervention. These downstream components can then perform verification operations to verify one or more transactions before they are committed (i.e. added) to the ledger of the permissioned or permissionless blockchain.

블록체인은 각각이 서버 또는 컨테이너에서 실행되는 표준 소프트웨어를 함유하는 다수의 피어 노드를 포함할 수 있다. 검증기 노드로 알려진 일부 피어 노드는 이들 트랜잭션이 블록체인 원장에 커밋될 수 있게 되기 전에 수십 또는 수백 개의 트랜잭션 블록을 신속하게 검증해야 하기 때문에 시스템 성능의 주요 병목이다. 소프트웨어를 사용하여 트랜잭션 블록을 검증하는 대신 하드웨어 가속기는 짧은 시간 내에 트랜잭션을 검증할 수 있다. 그 후, 피어 노드 소프트웨어는 하드웨어 가속기에서 검증 결과를 수집하고 결과를 수신된 블록 데이터와 조합하여 블록을 파생시킨 다음 저장된 원장에 커밋한다. 실험 설정에서, 하드웨어 가속기가 있는 노드는 네트워킹 가속 엔진에 결합되었을 때 멀티 코어 서버에서 실행되는 소프트웨어 전용 피어에 비교하여 트랜잭션 커밋 처리량의 10배를 초과한 개선을 달성하였다.A blockchain can include multiple peer nodes, each containing standard software running on servers or containers. Some peer nodes, known as validator nodes, are a major bottleneck in system performance because they need to quickly verify blocks of tens or hundreds of transactions before these transactions can be committed to the blockchain ledger. Instead of using software to verify blocks of transactions, hardware accelerators can verify transactions in a fraction of the time. After that, the peer node software collects the verification results from the hardware accelerator, combines the results with the received block data to derive a block, and commits it to the stored ledger. In an experimental setup, nodes with hardware accelerators achieved more than a 10x improvement in transaction commit throughput compared to software-only peers running on multi-core servers when coupled to a networking acceleration engine.

도 1은 일 예에 따른 허가형 블록체인(100)에 대응하는 타이밍 차트이다. 도 1의 허가형 블록체인(100)의 타이밍 차트는 특히 하이퍼레저 패브릭과 관련되지만, 본 출원의 실시예는 임의의 유형의 허가형 블록체인에 적용될 수 있다. 또한, 본 출원의 실시예는 이들 트랜잭션이 원장에 커밋되기 전에 트랜잭션에 대한 검증 프로세스를 수행하는 비허가형 블록체인에도 적용될 수 있다. 따라서, 하이퍼레저 패브릭은 아래에 설명된 하드웨어 가속기의 이점을 누릴 수 있는 적절한 블록체인 네트워크의 한 예로서 제공될 뿐이다.1 is a timing chart corresponding to a permissioned blockchain 100 according to an example. Although the timing chart of permissioned blockchain 100 in FIG. 1 relates specifically to Hyperledger Fabric, embodiments of the present application may be applied to any type of permissioned blockchain. In addition, embodiments of the present application can be applied to permissionless blockchains that perform a verification process for transactions before these transactions are committed to the ledger. Thus, Hyperledger Fabric is provided only as one example of a suitable blockchain network that can benefit from the hardware accelerators described below.

블록체인(100)의 트랜잭션 유동은 실행-정렬-검증 모델을 따르며, 트랜잭션이 먼저 실행된 다음 블록으로 정렬되고 최종적으로 검증되고 (지금까지 커밋된 블록의 전역 상태를 유지하기 위한 상태 데이터베이스와 함께) 원장에 커밋된다. 결과적으로, 허가형 블록체인(100)은 피어, 정렬자, 클라이언트 등과 같은 다양한 유형의 노드를 포함하며, 각각의 노드에는 MSP에서 제공하는 ID가 있다. 이러한 식별은 인증서 형태로 제공될 수 있다.The transaction flow of blockchain 100 follows a run-sort-verify model, where transactions are first executed, then sorted into blocks, and finally verified (along with a state database to maintain a global state of blocks that have been committed so far). committed to the ledger. As a result, the permissioned blockchain 100 includes various types of nodes such as peers, aligners, clients, and the like, and each node has an ID provided by the MSP. This identification may 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 to the blockchain 100. For example, if blockchain 100 is used to track transfers of money from a financial institution, a client may submit a transaction to move funds from a first account to a second account (either the same financial institution or a different institution). In step 1, the client submits a transaction to commit to the blockchain. In particular, transactions are received at multiple endorsing nodes (or peers). Endorsing nodes both execute/endorsee transactions and verify/commit blocks to the ledger. Each endorsing node executes transactions against its own state database to compute a read-write set of transactions (represented by E in FIG. 1). The read set is the key accessed and its version number, while the write set is the key to be updated with its new value.

보증 프로세스가 성공하면(즉, 오류가 없는 경우), 단계 2에서 보증 노드는 트랜잭션에 그 보증을 추가하고 트랜잭션을 클라이언트에 반환한다. 클라이언트가 충분한 수의 보증을 수집한 후, 단계 3에서 클라이언트는 트랜잭션을 검증 프로세스에 제출할 것을 정렬 서비스에 요청한다. 일 실시예에서, 정렬 서비스는 트랜잭션에 대한 전체 정렬을 설정하기 위해 합의 메커니즘을 사용하는 정렬자(예를 들어, 컴퓨팅 노드)를 포함한다. 래프트(Raft) 및 아파치 카프카(Apache Kafka)/주키퍼(Zookeeper) 기반 합의 메커니즘과 같은 다수의 플러그형 합의 메커니즘을 사용할 수 있다.If the vouching process succeeds (i.e. there are no errors), at step 2 the vouching node adds that vouching to the transaction and returns the transaction to the client. After the client has collected a sufficient number of endorsements, in step 3 the client requests the sort service to submit the transaction to the verification process. In one embodiment, a sorting service includes an orderer (eg, a computing node) that uses a consensus mechanism to establish an overall order for a transaction. A number of pluggable consensus mechanisms are available, such as Raft and Apache Kafka/Zookeeper based consensus mechanisms.

단계 4에서, 정렬 서비스는 트랜잭션이 블록에 포함되도록 승인된 후 클라이언트에 다시 응답한다(단계 4). 그 후, 정렬 서비스는 정렬된 트랜잭션으로부터 트랜잭션의 블록(105)을 생성한다. 일 실시예에서, 정렬 서비스는 사용자 구성 타임아웃이 만료되거나 블록 크기에 대한 사용자 구성 제한에 도달할 때 정렬된 트랜잭션으로부터 블록(105)을 생성한다.In step 4, the sort service responds back to the client after the transaction has been approved for inclusion in the block (step 4). The sorting service then creates a block 105 of transactions from the sorted transactions. In one embodiment, the sorting service creates blocks 105 from sorted transactions when a user-configured timeout expires or when a user-configured limit on block size is reached.

일단 블록(105)이 생성되면, 정렬 서비스는 단계 5에서 예를 들어 가십(Gossip) 프로토콜을 통해 모든 보증 및 비보증 노드에 이를 브로드캐스트한다. 각각의 노드는 블록(105)의 모든 트랜잭션을 검증한 다음 블록을 원장 및 상태 데이터베이스(V로 표시됨)에 커밋한다. 최종적으로, 노드 중 하나가 트랜잭션이 커밋되었다는 것 또는 트랜잭션이 원장에서 무효 또는 유효 중 어느 것으로 표시되었는지 여부에 대한 통지를 클라이언트에 발신한다(단계 6).Once the block 105 is created, the alignment service broadcasts it in step 5 to all vouching and non vouching nodes, for example via the Gossip protocol. Each node verifies all transactions in block 105 and then commits the block to the ledger and state database (denoted by 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 either invalid or valid in the ledger (step 6).

도 1은 검증 페이즈의 검증 워크플로우(110)를 우측에 더 구체적으로 도시한다. 이 워크플로우(110)는 블록(105)을 수신하는 모든 노드에서 수행되는 4개 단계를 보여준다. 가십 프로토콜을 통해 정렬 서비스(또는 리드 노드)로부터 트랜잭션 블록(105)을 수신하면, 단계 1에서 노드는 블록의 구문 구조를 검사하고 그 서명을 확인한 다음, 아래에서 더 구체적으로 설명될 다양한 동작의 파이프라인을 통해 이를 발신한다. 단계 2에서, 블록의 각각의 트랜잭션이 구문적으로 검사되고 그 서명이 확인된다. 그 후, 검증 시스템 체인코드(VSCC)가 각각의 트랜잭션에 대해 실행되고, 여기서, 보증이 검증되고 연관된 체인코드의 보증 정책이 평가된다. 그 보증 정책이 충족되지 않으면 트랜잭션은 무효로 표시된다.Figure 1 shows the verification workflow 110 of the verification phase in more detail on the right. This workflow 110 shows the four steps performed on every node receiving block 105. Upon receiving a transaction block 105 from the sort service (or lead node) via the gossip protocol, in step 1 the node examines the syntactic structure of the block, verifies its signature, and then pipes the various operations to be described in more detail below. Send it over the line. In step 2, each transaction in the block is syntactically checked and its signature is verified. Then, the verification system chaincode (VSCC) is executed for each transaction, where the endorsement is verified and the associated chaincode's endorsement policy is evaluated. If that endorsement policy is not met, the transaction is marked as invalid.

단계 3에서, 다중 버전 동시성 제어(MVCC) 검사가 수행된다. 이 검사는 유효한 트랜잭션 사이에 판독-기록 충돌이 없는 것을 보장한다. 달리 말해서, 단지 하나의 트랜잭션만 의도했을 때에 2개의 트랜잭션이 커밋되는 이중 지불 문제를 방지한다. 상태 데이터베이스(도 1에 "상태db"로 예시됨)에 액세스함으로써 각각의 트랜잭션의 판독 세트가 다시 컴퓨팅되고 보증 페이즈의 판독 세트와 비교된다. 이러한 판독 세트가 다르면, 이때, 일부 다른 트랜잭션(이 블록(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-spending problem where two transactions commit when only one transaction was intended. By accessing the state database (illustrated as “statusdb” in FIG. 1), each transaction's read set is again computed and compared to the read set of the assurance phase. If these read sets are different, then at this time some other transaction (either this block 105 or the previous block) has already modified the same key and thus this transaction is marked invalid.

마지막 단계 4에서, 블록은 노드의 저장된 원장에 커밋된다. 일 실시예에서, 전체 블록은 그 트랜잭션의 유효/무효 플래그와 함께 먼저 원장에 기록된다. 그 후, 유효한 트랜잭션의 기록 세트가 상태 데이터베이스에 커밋된다.In the final step 4, the block is committed to the node's stored ledger. In one embodiment, the entire block is first written to the ledger along with the transaction's valid/invalid flag. The record set of valid transactions is then committed to the state database.

도 2a 및 도 2b는 예에 따른 하드웨어 가속기(210)를 갖는 블록체인의 노드(200)의 블록도이다. 일 실시예에서, 노드(200)는 트랜잭션을 블록체인에 커밋할 때 검증 프로세스를 수행하는 임의의 컴퓨팅 시스템이다. 예를 들어, 노드(200)는 도 1에 도시된 바와 같이 보증 또는 비보증 노드 또는 피어일 수 있다. 일 실시예에서, 노드(200)는 서버 또는 다른 컴퓨팅 시스템이다.2A and 2B are block diagrams of a node 200 of a blockchain having a hardware accelerator 210 according to an example. In one embodiment, node 200 is any computing system that performs a verification process when committing a transaction to a blockchain. For example, node 200 may be an endorsement or non-guarantee node or peer as shown in FIG. 1 . In one embodiment, node 200 is a server or other computing system.

도 2a에서, 노드(200A)는 CPU(205), 하드웨어 가속기(210) 및 메모리(235)를 포함한다. CPU(205)는 각각이 임의의 수의 처리 코어를 함유할 수 있는 임의의 수의 프로세서를 나타낸다. 메모리(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 contain any number of processing cores. Memory 235 represents volatile memory, non-volatile memory (eg, hard disk drive), and combinations thereof. As shown, memory 235 stores a ledger 240 listing committed transactions of the blockchain.

하드웨어 가속기(210)는 도 1에 예시된 검증 워크플로우(110)를 수행하기 위한 다양한 회로 요소를 함유한다. 일 실시예에서, 하드웨어 가속기(210)는 집적 회로이다. 다른 실시예에서, 하드웨어 가속기(210)는 하나 이상의 집적 회로가 장착된 보드(예를 들어, PCIe 카드와 같은 인쇄 회로 보드(PCB))이다. 일 실시예에서, 집적 회로는 프로그램 가능 로직을 포함하는 필드 프로그램 가능 게이트 어레이(예를 들어, FPGA) 또는 시스템 온 칩(SoC)이다. 이 예에서, 가속기(210)의 다양한 회로 블록은 프로그램 가능 로직으로 구현된다. 그러나, 다른 실시예에서, 집적 회로는 가속기(210)의 회로 블록이 강화된 회로부(hardened circuitry)에서만 구현되는 주문형 집적 회로(ASIC)일 수 있다. 프로그램 가능 로직을 갖는 FPGA 및 SoC를 사용하면 검증 프로세스가 변경되는 경우 가속기(210)에 유연성을 제공하여 재프로그래밍할 수 있지만 ASIC를 사용하면 공간을 절약할 수 있다.Hardware accelerator 210 contains various circuit elements for performing verification workflow 110 illustrated in FIG. 1 . In one embodiment, hardware accelerator 210 is an integrated circuit. In another embodiment, the hardware accelerator 210 is a board (eg, a printed circuit board (PCB) such as a PCIe card) on which one or more integrated circuits are mounted. In one embodiment, the integrated circuit is a field programmable gate array (eg, FPGA) or system on a chip (SoC) that includes programmable logic. In this example, various circuit blocks of accelerator 210 are implemented with programmable logic. However, in other embodiments, the integrated circuit may be an application specific integrated circuit (ASIC) in which the circuit blocks of accelerator 210 are implemented only in hardened circuitry. Using FPGAs and SoCs with programmable logic provides flexibility for accelerator 210 to be reprogrammed if the verification process changes, while using an ASIC saves space.

가속기(210)는 트랜잭션에 관한 데이터를 함유하는 이더넷 패킷을 수신하기 위한 네트워크 인터페이스(215), 데이터를 재포맷하기 위한 프로토콜 프로세서(220), 검증 워크플로우를 수행하기 위한 블록 프로세서(225) 및 검증 결과를 저장하는 레지스터 맵(230(reg_map))(예를 들어, 메모리 레지스터)을 포함한다. 프로토콜 프로세서(220), 블록 프로세서(225) 및 레지스터 맵(230)은 아래에서 더 구체적으로 설명된다. 일반적으로, 이러한 하드웨어 블록은 함께 작동하여 수신된 트랜잭션 블록을 검증한다. 즉, 네트워크 인터페이스(215)는 트랜잭션 블록에 대응하는 데이터를 포함하는 다수의 패킷을 수신한다. 이 데이터는 처리에 부적절한 포맷일 수 있기 때문에, 프로토콜 프로세서(220)는 소비를 위해 블록 프로세서(225)에 대한 데이터를 재포맷하고 출력할 수 있다. 블록 프로세서(225)가 검증 워크플로우의 대부분의 단계를 수행하는 동안, 이들 단계 중 일부는 프로토콜 프로세서(220) 및 레지스터 맵(230)에 의해 수행될 수 있다. 또한, 원장(240)이 메모리(235)(가속기(210)에 의해 직접 액세스될 수 없음)에 저장되기 때문에, 노드(200A)는 CPU(205)에 의존하여 검증된 트랜잭션을 원장(240)에 커밋할 수 있다. 즉, 가속기(210)는 CPU(205)가 평가할 수 있는 레지스터 맵(230)에 검증 결과를 저장한 다음 원장에 트랜잭션을 커밋할 수 있다. 즉, 일 실시예에서 모든 트랜잭션이 원장에 커밋되지만, 검증 플래그가 어떤 것이 유효하고 어떤 것이 무효인지에 대한 정보를 저장한다. 그러나, 상태 데이터베이스(아래에서 설명됨)의 경우, 성공적으로 검증된 트랜잭션만 커밋된다. 대부분의 검증은 하드웨어 가속기(210)에서 수행되지만, 트랜잭션을 원장(240)에 커밋하는 것은 CPU(205)에서 실행되는 소프트웨어에 의해 수행될 수 있다.Accelerator 210 includes a network interface 215 for receiving Ethernet packets containing data pertaining to a transaction, a protocol processor 220 for reformatting the data, a block processor 225 for performing verification workflows and verification and a register map 230 (reg_map) (eg, a memory register) to store the result. Protocol processor 220, block processor 225 and register map 230 are described in more detail below. Typically, these hardware blocks work together to verify received transaction blocks. That is, the network interface 215 receives multiple packets containing data corresponding to the transaction block. Because this data may be in an inappropriate format for processing, protocol processor 220 may reformat and output the data to block processor 225 for consumption. While block processor 225 performs most steps of the verification workflow, some of these steps may be performed by protocol processor 220 and register map 230 . Also, since ledger 240 is stored in memory 235 (which cannot be directly accessed by accelerator 210), node 200A relies on CPU 205 to send verified transactions to ledger 240. can commit. That is, the accelerator 210 may store the verification result in the register map 230 that the CPU 205 can evaluate and then commit the transaction to the ledger. That is, in one embodiment all transactions are committed to the ledger, but the validation flags store information about which are valid and which are invalid. However, in the case of the state database (discussed below), only successfully verified transactions are committed. Most of the verification is performed in the hardware accelerator 210, but committing the transaction to the ledger 240 may be performed by software running on the CPU 205.

도 2b는 네트워크 인터페이스 카드(NIC)(245)의 추가를 제외하고는 도 2a의 노드(200A)와 동일한 노드(200B)를 예시한다. 일 실시예에서, NIC(245)는 어떤 것이 가속기(210)를 통해 유동하는 네트워크 트래픽이고, 어떤 것이 NIC(245)를 통해 유동하는 네트워크 트래픽인지를 결정할 수 있는 능력을 노드(200B)에 제공한다. 일 실시예에서, 블록체인과 관련된 모든 트래픽은 가속기(210)를 통해 발신될 수 있는 반면 블록체인과 관련되지 않은 수신된 네트워크 트래픽은 NIC(245)에 의해 처리된다. 대조적으로, 노드(200A)에서 노드(200A)에 의해 수신된 모든 네트워크 트래픽(블록체인 트래픽이든 또는 비-블록체인 트래픽이든)은 가속기(210)에서 수신될 수 있다. 예를 들어, 프로토콜 프로세서(220)는 검증과 관련된 네트워크 트래픽은 블록 프로세서(225)로 전달하지만, 다른 모든 트래픽은 CPU(205)로 전달할 수 있다.FIG. 2B illustrates node 200B identical to node 200A of FIG. 2A except for the addition of a network interface card (NIC) 245 . In one embodiment, NIC 245 provides node 200B with the ability to determine what is network traffic flowing through accelerator 210 and what is network traffic flowing through NIC 245. . In one embodiment, all traffic related to the blockchain may originate through the accelerator 210 while received network traffic not related to the blockchain is handled by the NIC 245. In contrast, all network traffic (whether blockchain traffic or non-blockchain traffic) received by node 200A at node 200A may be received at accelerator 210 . For example, protocol processor 220 may pass network traffic related to validation to block processor 225, but pass all other traffic to CPU 205.

다른 실시예에서, 가속기(210)는 가속기(210)에서 트랜잭션을 검증하는 것과 관련된 네트워크 트래픽만 수신하는 반면 다른 모든 트래픽(보증 요청과 같은 다른 유형의 블록체인 트래픽이든, 또는 비-블록체인 트래픽이든)은 NIC(245)에서 수신 및 처리한다.In another embodiment, accelerator 210 only receives network traffic related to validating transactions in accelerator 210 while all other traffic (whether other types of blockchain traffic, such as endorsement requests, or non-blockchain traffic) ) is received and processed by the NIC 245.

도 2a 또는 2b에 도시되지 않은 또 다른 실시예에서, 가속기(210)는 CPU(205)의 도움 없이 모든 블록체인 동작을 수행할 수 있다. 해당 실시예에서, CPU(205)가 가속기(210)를 구성하거나 제어하는 데 사용될 수 있지만, NIC(245) 및 CPU(205)는 블록체인 작업을 수행하는 데에는 사용되지 않는다. 이 시나리오에서, 모든 네트워크 트래픽이 가속기(210)를 통과하며, 가속기는 블록체인 관련 패킷은 처리하지만 CPU(205)로/부터의 다른 패킷은 전달한다.In another embodiment not shown in FIGS. 2A or 2B , accelerator 210 may perform all blockchain operations without the aid of CPU 205 . In that embodiment, CPU 205 may be used to configure or control accelerator 210, but NIC 245 and CPU 205 are not used to perform blockchain operations. In this scenario, all network traffic passes through accelerator 210, which processes blockchain-related packets but forwards other packets to/from CPU 205.

도 3은 일 예에 따른 하드웨어 가속기에서 프로토콜 프로세서와 블록 프로세서 사이의 인터페이스(300)를 예시한다. 이 예에서, 인터페이스(300)는 블록 데이터, 트랜잭션 데이터(도 3에서 tx 데이터로 표시됨), 보증 데이터, 판독 세트 데이터 및 기록 세트 데이터를 블록 프로세서(225)로 송신하는 데 사용된다. 즉, 프로토콜 프로세서(220)는 트랜잭션 블록을 검증하는 데 사용되는 정보를 함유하는 블록체인의 다른 노드(예를 들어, 정렬 서비스의 정렬자)로부터 이더넷 패킷을 수신한다. 그 후, 프로토콜 프로세서(220)는 블록 프로세서(225)에 의해 소비될 수 있도록 데이터를 재포맷/파싱한다.3 illustrates an interface 300 between a protocol processor and a block processor in a hardware accelerator according to one example. In this example, interface 300 is used to send block data, transaction data (represented as tx data in FIG. 3 ), warranty data, read set data, and write set data to block processor 225 . That is, protocol processor 220 receives Ethernet packets from other nodes in the blockchain (e.g., orderers of a sorting service) containing information used to verify a block of transactions. Protocol processor 220 then reformats/parses the data so that it can be consumed by block processor 225.

도 4는 일 예에 따른 하드웨어 처리를 위한 데이터를 준비하기 위해 패킷을 파싱하기 위한 방법(400)의 흐름도이다. 설명의 편의를 위해, 방법(400)의 블록은 아래 도면과 병행하여 설명된다.4 is a flow diagram of a method 400 for parsing packets to prepare data for hardware processing according to an example. For ease of explanation, the blocks of method 400 are described in parallel with the figures below.

블록 405에서, 가속기의 네트워크 인터페이스는 트랜잭션 블록의 개별 컴포넌트를 함유하는 패킷을 수신한다. 블록은 전형적으로 단일 패킷으로 발신하기에는 너무 크기 때문에(예를 들어, 블록은 1 메가바이트를 초과할 수 있음) 소프트웨어 애플리케이션은 네트워크 프로토콜이나 소프트웨어 드라이버에 의존하여 블록을 다수의 패킷으로 분할한다. 그러나, 네트워크 프로토콜/드라이버는 전형적으로 데이터가 블록에서 어떻게 구조화되어 있는지 알지 못하므로 데이터는 전형적으로 애드혹 방식으로 송신된다. 이로 인해, 하드웨어 가속기가 수신된 패킷을 그 후 파싱하고 트랜잭션 블록을 재구성하는 것은 불가능하지는 않더라도 어렵다. 그러나, 본 출원의 실시예는 하드웨어 가속기가 트랜잭션 블록의 상이한 컴포넌트들을 재구성하기 위해 패킷을 파싱할 수 있도록 트랜잭션 블록을 송신하는 기술을 설명한다.At block 405, the accelerator's network interface receives packets containing the individual components of the transaction block. Because a block is typically too large to send as a single packet (eg, a block can exceed 1 megabyte), software applications rely on network protocols or software drivers to split the block into multiple packets. However, the data is typically transmitted in an ad-hoc fashion as the network protocol/driver typically does not know how the data is structured in blocks. This makes it difficult, if not impossible, for the hardware accelerator to then parse the received packets and reconstruct the transaction block. However, embodiments of the present application describe techniques for transmitting a transaction block such that a hardware accelerator can parse the packet to reconstruct the different components of the transaction block.

도 5a는 일 예에 따른 트랜잭션의 블록(505)에서 각각의 컴포넌트에 대해 개별 패킷을 송신하는 것을 예시한다. 구체적으로, 도 5a는 발신자(515)(예를 들어, 정렬자 또는 블록체인의 다른 피어 노드)가 하드웨어 가속기(210)에 패킷(520)을 송신하여 블록 메시지(505)가 재구성될 수 있도록 이들 패킷이 정확하게 파싱될 수 있게 하는 통신 시스템(500)을 예시한다. 이를 위해, 발신자(515)의 소프트웨어는 블록 메시지(505)를 여기에서 헤더, 트랜잭션(TX) 1-5 및 메타데이터로 도시된 그 개별 블록 컴포넌트(510)로 분할한다. 즉, 블록 메시지(505)의 데이터를 개별 패킷으로 분할하는 방식을 결정하기 위해 네트워크 프로토콜이나 드라이버에 의존하기보다는 발신자(515)의 소프트웨어(블록(505)의 구조를 알고 있음)가 블록을 그 컴포넌트(510)로 분리할 수 있다.5A illustrates sending individual packets for each component in block 505 of a transaction according to an example. Specifically, FIG. 5A shows that a sender 515 (e.g., an aligner or another peer node in a blockchain) sends packets 520 to hardware accelerator 210 so that block message 505 can be reconstructed from these It illustrates a communication system 500 that allows packets to be correctly parsed. To this end, the sender's 515's software splits the block message 505 into its individual 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 individual packets, the software of the sender 515 (which knows the structure of the block 505) breaks the block into its components. (510).

도 5a는 네트워크, 예를 들어 인터넷과 같은 사설 또는 공중 네트워크를 통해 패킷(520A-520G)을 하드웨어 가속기(210)로 송신하는 발신자(515)를 예시한다. 도시된 바와 같이, 각각의 패킷(520)은 컴포넌트(510) 중 단지 하나만을 포함하고, 즉, 패킷(520A)은 블록(505)의 헤더를 포함하고, 패킷(520B-520F) 각각은 트랜잭션 중 하나를 포함하고, 패킷(520G)은 블록(505)의 메타데이터를 포함한다. 소프트웨어가 블록(505)을 그 컴포넌트(510)로 분할하지 않고, 네트워크 프로토콜 또는 드라이버가 헤더 및 TX1의 일부를 포함하는 제1 패킷, TX1의 나머지 데이터 및 TX2의 일부를 포함하는 제2 패킷을 발신하는 등일 수 있다. 블록(505)에서 상이한 컴포넌트들(510)의 이러한 예측할 수 없는 분기는 블록(505)이 재구성될 수 있게 데이터를 파싱하는 하드웨어 가속기(210)를 설계하는 것을 어렵게 만들 수 있다.5A illustrates sender 515 sending packets 520A-520G to hardware accelerator 210 over a network, eg, a private or public network such as the Internet. As shown, each packet 520 includes only one of the components 510, i.e., packet 520A includes the header of block 505, and packets 520B-520F each include during a transaction. Packet 520G contains the metadata of block 505 . Without software dividing block 505 into its components 510, a network protocol or driver sends a first packet containing a header and part of TX1, and a second packet containing the rest of the data in TX1 and part of TX2. can be, etc. This unpredictable divergence of different components 510 at block 505 can make it difficult to design a hardware accelerator 210 that parses the data so that block 505 can be reconstructed.

또한, 도 5a에 도시되지 않았지만, 발신자(515)는 컴포넌트(510)와 연관된 서명된 인증서를 제거할 수 있다. 이러한 인증서는 블록(505) 및 블록 내의 트랜잭션을 검증하는 데 사용될 수 있다. 그러나, 이러한 인증서(예를 들어, x509 인증서)는 크기가 크며, 이는 이들을 가속기(210)로 송신하려면 상당한 양의 대역폭이 필요하다는 것을 의미한다. 일 실시예에서, 발신자(515)는 그 후 가속기(210)로 발신되는 패킷(520)을 형성하기 전에 블록(505)으로부터 인증서를 제거한다. 대신에, 발신자(515)는 인증서를 ID(예를 들어, 8 비트 코드)로 대체할 수 있다. 일 실시예에서, 발신자(515)는 가속기(210)에 인증서를 개별적으로 한 번 송신하며, 가속기는 그 후 나중에 검색하기 위해 인증서를 캐시에 저장할 수 있다. 이러한 방식으로, 인증서는 블록(505)에서 다수의 컴포넌트(510)와 연관되어 있는 경우 반복적이 아니라 한 번 발신된다.Also, although not shown in FIG. 5A , sender 515 can remove the signed certificate associated with component 510 . These certificates can be used to verify block 505 and transactions within the block. However, these certificates (eg, x509 certificates) are large, meaning that a significant amount of bandwidth is required to transmit them to the accelerator 210 . In one embodiment, sender 515 then removes the certificate from block 505 before forming packet 520 that is sent to accelerator 210 . Instead, sender 515 can replace the certificate with an ID (eg, an 8-bit code). In one embodiment, sender 515 individually sends the certificates to accelerator 210 once, which may then cache the certificates for later retrieval. In this way, the certificate is issued once, rather than repeatedly, when associated with multiple components 510 at block 505 .

도 5b는 일 예에 따른 블록 내의 개별 컴포넌트를 발신하기 위한 패킷(520)을 예시한다. 520은 L2 및 IP/UDP 데이터, 전송 헤더(525), 블록 머신 프로토콜 헤더(530) 및 블록 메시지 페이로드(535)를 포함한다. 전송 헤더(525)는 시퀀스 번호(Seq), 확인응답 번호(Ack) 및 제어 데이터(Ctrl)를 포함할 수 있다. 시퀀스 번호는 블록(505)을 나타내는 패킷 시퀀스에서 패킷이 있는 위치를 나타낸다. 확인응답 번호는 발신자(515)에게 다시 송신할 Ack 패킷을 생성할 때 가속기(210)에 의해 사용된다. 제어 데이터는 애플리케이션 레벨 프로토콜 오류 및 수신기 버퍼 상태와 같은 이러한 정보를 포함할 수 있다.5B illustrates a packet 520 for sending individual components within a block according to one example. 520 includes L2 and IP/UDP data, transport header 525, block machine protocol header 530 and block message payload 535. The transport header 525 may include a sequence number (Seq), an acknowledgment number (Ack), and control data (Ctrl). The sequence number indicates where the packet is in the sequence of packets representing block 505. The acknowledgment number is used by accelerator 210 when generating an Ack packet to send back to sender 515. Control data may include such information as application level protocol errors 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 comments. The message type indicates whether the data in payload 535 is a block header, transaction or metadata. Comments point out the location of important data. For example, annotations are pointers to relevant data in packet 520 (e.g., where to find specific data in payload 535) and cache or placeholders pointing to data in another packet (but in the same block). can include In one embodiment, the annotation's place setter is used to indicate an ID for packet 520. Payload 535 may include data corresponding to the particular component 510 sent in the packet, ie metadata from block 505 .

각각의 패킷(520)이 블록(505)의 컴포넌트(510) 중 하나를 함유하기 때문에, 이는 가속기(210)가 블록의 모든 패킷(520)을 수신하기 전에 데이터 처리를 시작할 수 있다는 이점을 제공한다. 즉, 소프트웨어가 모든 패킷을 수신한 다음 검증을 위해 블록(505)을 재구성하기를 대기하는 대신, 가속기(210)가 트랜잭션이 들어올 때 처리할 수 있다. 예를 들어, 프로토콜 프로세서는 TX2를 함유하는 패킷(520C)이 가속기(210)에서 수신되기 전에 TX1에 대응하는 패킷(520B)을 파싱할 수 있다. 따라서, 가속기(210)는 트랜잭션이 재구성되고 검증될 수 있기 전에 모든 패킷이 수신되어야 하는 소프트웨어 솔루션보다 훨씬 빨리 트랜잭션을 처리하기 시작할 수 있다.Since each packet 520 contains one of the components 510 of block 505, this provides the advantage that accelerator 210 can start processing data before all packets 520 in the block have been received. . That is, instead of waiting for the software to receive all packets and then reconstruct block 505 for verification, accelerator 210 can process transactions as they come in. For example, the protocol processor may parse packet 520B corresponding to TX1 before packet 520C containing TX2 is received at accelerator 210 . Thus, accelerator 210 can begin processing transactions much sooner than software solutions where all packets must be received before the transaction can be reconstructed and verified.

도 6은 일 예에 따른 하드웨어 가속기의 프로토콜 프로세서(220)의 블록도이다. 도시된 바와 같이, 데이터 패킷(520)은 메시지 유형 및 주석을 추출하기 위해 레벨 4-7(L4-L7) 패킷 헤더(예를 들어, 블록 머신 프로토콜 헤더(530))를 파싱하는 패킷 필터(610)에서 수신된다. 메시지 유형은 블록 시작, 블록 메타데이터, 트랜잭션 등을 포함할 수 있다. 메시지 페이로드에 대한 주석은 블록 헤더 위치, 블록 서명 위치, 블록 ID, 트랜잭션 데이터 시작, 채널 이름, 트랜잭션 ID, 체인코드 이름, 생성자 인증 기관(CA) ID, 트랜잭션 액션, 트랜잭션 CA ID, 계약 이름, 계약 입력, 보증인 액션, 판독/기록 세트, 보증인 목록, 트랜잭션 서명, 정렬자 CA ID, 정렬자 서명, 인증서 ID, 인증서 공개 키 데이터, 상태 유효 시작 정보, 상태 유효 종료 정보 등을 포함할 수 있다. 패킷 필터(610)는 또한 전송 헤더에서 시퀀스 번호를 식별하고 이 번호를 응답 패킷(예를 들어, 확인응답 패킷)을 발신자(예를 들어, 정렬자)에게 다시 송신하는 응답 생성기(605)로 전달한다.6 is a block diagram of a protocol processor 220 of a hardware accelerator according to an example. As shown, data packet 520 is packet filter 610 which parses a level 4-7 (L4-L7) packet header (e.g., block machine protocol header 530) to extract message type and comments. ) is received from Message types can include block start, block metadata, transaction, etc. Comments on the message payload include block header location, block signature location, block ID, transaction data start, channel name, transaction ID, chaincode name, originator certificate authority (CA) ID, transaction action, transaction CA ID, contract name, contract It may include inputs, endorser actions, read/write sets, endorser lists, transaction signatures, aligner CA IDs, aligner signatures, certificate IDs, certificate public key data, state valid start information, state valid end information, and the like. Packet filter 610 also identifies a sequence number in the transport header and passes this number to response generator 605, which transmits a response packet (e.g., an acknowledgment packet) back to the sender (e.g., aligner). do.

패킷 필터(610)는 메시지 유형, 주석 및 패킷 페이로드를 주석에 기초하여 메시지 페이로드를 처리하고 블록 프로세서(225)에 대한 관련 데이터를 추출하는 블록 추출기(615)로 전달한다. 블록 추출기(615)는 또한 응답 생성기(605)에 대한 메시지 유효 신호를 제공하여 생성기(605)가 블록 및 그 트랜잭션이 유효한지 또는 무효인지 여부를 발신자에게 알릴 수 있다. 블록 프로세서(225)의 세부사항은 방법(400)의 잔여 부분과 아래 도면에서 설명된다.Packet filter 610 passes the message type, annotation, and packet payload to block extractor 615, which processes the message payload based on the annotation and extracts relevant data for block processor 225. The block extractor 615 can also provide 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 block processor 225 are described in the remainder of method 400 and in the figures below.

방법(400)으로 복귀하여, 블록 410에서 프로토콜 프로세서의 블록 추출기는 패킷의 ID를 사용하여 패킷에 대응하는 서명된 인증서를 식별한다. 앞서 설명한 바와 같이, 발신자는 블록을 복수의 패킷에서 하드웨어 가속기로 송신하기 전에 블록으로부터 인증서를 제거할 수 있다. 인증서가 크고 거의 변경되지 않기 때문에 이 작업을 수행할 수 있다. 따라서, 인증서를 참조하는 패킷의 훨씬 작은 ID 또는 키로 인증서를 교체하면 상당한 대역폭을 절약할 수 있고 트랜잭션 블록의 각각의 컴포넌트를 단일 패킷으로 발신할 수 있는 것을 보장할 수 있다.Returning to method 400, at block 410 the protocol processor's block extractor uses the packet's ID to identify a signed certificate corresponding to the packet. As described above, the sender can remove the certificate from the block before sending it to the hardware accelerator in multiple packets. This can be done because certificates are large and rarely change. Thus, replacing the certificate with the much smaller ID or key of the packet referencing the certificate can save significant bandwidth and ensure that each component of the transaction block can be sent as a single packet.

그러나, 일단 패킷이 수신되면, 블록 추출기는 블록(및 블록의 트랜잭션)을 검증하고 블록 및 트랜잭션의 구문이 정확한 것을 보장하기 위해 인증서가 필요할 수 있다. 따라서, 블록 추출기는 컴포넌트를 재구성할 수 있으며, 이는 블록 추출기가 인증서를 식별하고 검색한다는 것을 의미한다.However, once a packet is received, a block extractor may require certificates to verify blocks (and transactions in blocks) and to ensure that blocks and transactions are syntactically correct. Thus, the block extractor can reconstruct the component, which means that the block extractor identifies and retrieves the certificate.

도 7은 일 예에 따른 블록 추출기(615)의 블록도이다. 도시된 바와 같이, 블록 추출기(615)는 패킷 페이로드 및 해당페이로드에 대응하는 인증서(또는 인증서들)를 식별하기 위한 주석을 수신하는 데이터 삽입기(705)를 포함한다. 예를 들어, 페이로드가 블록 메타데이터인 경우, 페이로드는 블록을 준비한 정렬자의 인증서에 대응하는 ID를 포함할 수 있다. 페이로드에 트랜잭션이 포함된 경우, 페이로드는 트랜잭션을 제출한 클라이언트에 대응하는 ID와 트랜잭션을 보증한 보증 노드에 대응하는 하나 이상의 ID를 포함할 수 있다. 따라서, 데이터 삽입기(705)는 페이로드에서 다수의 ID를 식별할 수 있다.7 is a block diagram of a block extractor 615 according to an example. As shown, the block extractor 615 includes a data inserter 705 that receives a packet payload and annotations to identify the certificate (or certificates) corresponding to that payload. For example, if the payload is block metadata, the payload may include an ID corresponding to a certificate of an aligner who prepared the block. When a transaction is included in the payload, the payload may include an ID corresponding to the client that submitted the transaction and one or more IDs corresponding to the endorsing node that endorsed the transaction. Thus, data inserter 705 can identify multiple IDs in the payload.

ID를 사용하여, 데이터 삽입기(705)는 ID에 대응하는 서명된 인증서를 검색하기 위해 ID 캐시(710)에서 검색을 수행한다. 즉, 정렬자가 인증서를 가속기에 발신할 때, 가속기는 이러한 인증서(및 그 대응 ID)를 ID 캐시(710)에 저장하고, 따라서, 그 후 트랜잭션 블록을 검증할 때 이러한 인증서를 검색할 수 있다.Using the ID, data inserter 705 performs a search in ID cache 710 to retrieve the signed certificate corresponding to the ID. That is, when the aligner issues certificates to the accelerator, the accelerator stores these certificates (and their corresponding IDs) in the ID cache 710, so that it can then retrieve these certificates when verifying the transaction block.

방법(400)으로 복귀하여, 블록 415에서 블록 추출기(615)는 블록의 개별 컴포넌트를 재구성한다. 즉, 각각의 페이로드를 수신함에 따라 블록 추출기(615)는 대응 인증서를 검색할 수 있다. 이는 데이터 삽입기(705)가 페이로드의 다른 데이터와 함께 검색된 인증서(또는 인증서들)를 데이터 추출기(715)로 송신하는 도 7에 도시되어 있다.Returning to method 400, at block 415 block extractor 615 reconstructs the individual components of the block. That is, upon receiving each payload, block extractor 615 may retrieve a corresponding certificate. This is illustrated in FIG. 7 where data inserter 705 sends the retrieved certificate (or certificates) to data extractor 715 along with other data in the payload.

데이터 추출기(715)는 상이한 시간에 트랜잭션 블록의 컴포넌트를 재구성할 수 있다. 예를 들어, 시간 1 동안 데이터 추출기(715)는 제1 수신 패킷을 사용하여 블록의 헤더를 재구성하고, 시간 2에서 데이터 추출기(715)는 제2 수신 패킷을 사용하여 블록의 제1 트랜잭션을 재구성하는 등이다. 따라서, 블록 추출기(615)는 블록 내의 상이한 컴포넌트들이 추출기(615) 내의 상이한 스테이지(예를 들어, 상이한 회로 모듈)에서 병렬로 실행될 수 있도록 파이프라인화될 수 있다.Data extractor 715 can reconstruct the components of the transaction block at different times. For example, during time 1 data extractor 715 uses the first received packet to reconstruct the block's header, and at time 2 data extractor 715 uses the second received packet to reconstruct the first transaction in the block. etc. Thus, block extractor 615 can be pipelined so that different components within a block can be executed in parallel at different stages (eg, different circuit modules) within extractor 615 .

블록 420에서, 해시 계산기(720)는 블록 내의 구분자 컴포넌트에 대한 해시를 계산한다. 일 실시예에서, 해시 계산기(720)는 전체 블록, 블록의 모든 트랜잭션 및 각각의 트랜잭션의 모든 보증에 대한 해시를 생성한다. 해시 계산기(720)는 상이한 시간에 이들 해시를 생성할 수 있다. 예를 들어, 해시 계산기(720)는 트랜잭션에 대응하는 패킷을 수신할 때 특정 트랜잭션에 대한 해시(및 해당 트랜잭션과 연관된 모든 보증에 대한 해시)를 생성할 수 있다. 그러나, 해시 계산기(720)는 블록에 대한 모든 패킷을 수신한 후 전체 블록에 대한 해시를 계산하기 위해 대기할 수 있다.At block 420, hash calculator 720 calculates a hash for the delimiter components within the block. In one embodiment, hash calculator 720 generates hashes for the entire block, all transactions in the block, and all guarantees of 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 a hash for all guarantees associated with that transaction) upon receiving packets corresponding to the transaction. However, hash calculator 720 may wait to calculate the hash for the entire block after receiving 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 of the packet. That is, packets transmitted by the sender may contain a previously computed 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 compute hashes for the block, each transaction in the block, and each guarantee of the transaction and send these hashes to the accelerator 210 . If these hashes match the local hash generated by hash checker 725, it means that the message is valid and follows the proper syntax for blocks and transactions. If the hashes do not match, the method proceeds to block 445 where the hardware accelerator indicates that there is a syntax error in the received data. In one embodiment, the hardware accelerator sends a response message to the sender indicating that the verification process has failed.

해시가 수신된 해시와 일치한다고 가정하면, 방법(400)은 하드웨어 가속기가 수신된 데이터가 성공적으로 파싱되었음을 나타내는 블록 430으로 진행한다. 일 실시예에서, 도 6의 응답 생성기(605)는 트랜잭션 블록이 프로토콜 프로세서(220)에 의해 성공적으로 수신 및 처리되었음을 나타내는 응답 또는 확인응답(ACK) 메시지를 발신자에게 송신한다.Assuming the hash matches the received hash, the method 400 proceeds to block 430 where the hardware accelerator indicates that the received data has been successfully parsed. In one embodiment, response generator 605 of FIG. 6 sends a response or acknowledgment (ACK) message to the sender indicating that the transaction block was successfully received and processed by protocol processor 220 .

블록 435에서, 작업 생성기(730)는 검증 프로세스를 완료하기 위해 블록 프로세서를 위한 작업을 생성한다. 일 실시예에서, 작업 생성기(730)는 블록 작업, 트랜잭션 작업 및 보증인 작업을 생성한다. 블록 작업은 블록 ID, 블록 서명(예를 들어, 블록을 생성한 정렬자의 인증서) 등을 포함할 수 있다. 트랜잭션 작업은 트랜잭션 ID, 트랜잭션 서명(예를 들어, 트랜잭션을 생성한 클라이언트의 인증서), 트랜잭션 판독/기록 세트 등을 포함할 수 있다. 일 실시예에서, 작업 생성기(730)는 블록 내의 각각의 트랜잭션에 대한 트랜잭션 작업을 생성한다. 작업 생성기(730)는 또한 트랜잭션에서 각각의 보증에 대한 보증인 작업을 생성할 수 있다. 즉, 각각의 트랜잭션은 여러 보증을 받을 수 있기 때문에 작업 생성기(730)는 각각의 이들 보증에 대한 작업을 생성할 수 있다.At block 435, task generator 730 creates a task for the block processor to complete the verification process. In one embodiment, job generator 730 creates block jobs, transaction jobs, and surer jobs. A block operation may include a block ID, a block signature (eg, the certificate of the sorter who created the block), and the like. A transaction operation may include a transaction ID, a transaction signature (eg, the certificate of the client that created the transaction), a transaction read/write set, and the like. In one embodiment, task generator 730 creates a transaction task for each transaction in a block. Job generator 730 may also create an endorser job for each endorsement in the transaction. That is, since each transaction may receive multiple endorsements, task generator 730 may create a task for each of these endorsements.

블록 440에서, 작업 생성기(730)는 하드웨어 가속기의 블록 프로세서에 작업 및 대응하는 데이터를 전달한다. 그 후, 블록 프로세서는 블록, 트랜잭션 및 보증을 검증할 수 있다. 일반적으로, 프로토콜 프로세서(및 도 5 내지 도 7에 예시된 그 회로 컴포넌트)는 수신된 패킷을 파싱하여 블록의 데이터를 소프트웨어의 도움 없이 블록 프로세서에서 소화하거나 처리할 수 있는 포맷으로 재포맷한다. 따라서, 블록체인의 검증 프로세스는 전적으로 하드웨어에 의해 수행될 수 있으므로 이 프로세스에 필요한 시간과 컴퓨팅 자원이 감소한다.At block 440, task generator 730 passes the task and corresponding data to the block processor of the hardware accelerator. After that, the block processor can verify blocks, transactions and guarantees. In general, a protocol processor (and its circuit components illustrated in FIGS. 5-7) parses received packets to reformat the block's data into a format that can be digested or processed by the block processor without the aid of software. Thus, the verification process of a blockchain can be performed entirely by hardware, reducing the time and computing resources required for this process.

도 8은 일 예에 따른 트랜잭션을 블록체인 원장에 커밋하기 전에 트랜잭션을 검증하기 위한 방법(800)의 흐름도이다. 설명의 편의를 위해, 방법(800)의 상이한 스테이지를 아래의 도 9 내지 도 11에 따라 설명한다. 또한, 방법(800)의 스테이지는 도 1에 예시된 검증 워크플로우(110)의 단계 1-4와 상관 관계가 있다.8 is a flow diagram of a method 800 for validating a transaction prior to committing the transaction to a blockchain ledger according to one example. For ease of explanation, the different stages of the method 800 are described according to FIGS. 9-11 below. Further, the stages of method 800 correlate with steps 1-4 of validation workflow 110 illustrated in FIG. 1 .

방법(800)은 하드웨어 가속기가 예를 들어 트랜잭션이 원장에 커밋될 수 있기 전에 검증될 필요가 있는 정렬 서비스로부터의 트랜잭션 블록을 이미 수신했다고 가정한다. 또한, 방법(800)은 프로토콜 프로세서가 블록 구문 검사(예를 들어, 도 1의 "blk 구문 검사") 및 트랜잭션 구문 검사(예를 들어, 도 1의 "tx 구문 검사")를 수행하여 검증을 수행하는 데 필요한 모든 데이터가 수신되었음을 확인한다고 가정한다.Method 800 assumes that the hardware accelerator has already received a block of transactions from, for example, a sorting service that needs to be verified before the transaction can be committed to the ledger. Method 800 also allows the protocol processor to perform block syntax checking (eg, "blk syntax checking" in FIG. 1 ) and transaction syntax checking (eg, "tx syntax checking" in FIG. 1 ) to perform verification. Assume that you confirm that all the data you need to do is received.

스테이지 805에서 하드웨어 가속기는 트랜잭션 블록의 서명을 확인한다. 더 구체적으로, 블록 프로세서는 블록 검증을 수행할 수 있게 프로토콜 프로세서로부터 도 3에 도시된 정보를 수신한다. 도 9에 도시된 바와 같이, 블록 프로세서(225)는 2개의 하드웨어 서브모듈을 포함한다: 블록 확인(905) 및 블록 검증(910). 블록 확인(905)은 정렬자 서명이 블록에 있는지 확인하기 위한 타원 곡선 디지털 서명 알고리즘(ECDSA) 엔진(920)을 포함한다. 다르게 말하면, ECDSA 엔진(920)은 블록의 수신된 서명을 정렬자에게 알려진 서명(예를 들어, 인증서)과 비교하여 이들이 일치함을 보장한다. 그런 식으로 블록 확인(905)은 트랜잭션 블록이 승인된 노드에서 유래한 것임을 확인할 수 있다. ECDSA 엔진(920)이 도시되어 있지만, 임의의 적절한 서명 알고리즘 엔진을 사용할 수 있다.At stage 805, the hardware accelerator verifies the signature of the transaction block. More specifically, the block processor receives the information shown in FIG. 3 from the protocol processor so as to be able to perform block verification. As shown in FIG. 9 , block processor 225 includes two hardware submodules: block verify 905 and block verify 910 . Block verification 905 includes an Elliptic Curve Digital Signature Algorithm (ECDSA) engine 920 to verify that an aligner signature is present on a block. In other words, the ECDSA engine 920 compares the block's received signature to a signature known to the aligner (eg, a certificate) to ensure that they match. In that way, block confirmation 905 can confirm that the transaction block originated from the approved node. Although an ECDSA engine 920 is shown, any suitable signature algorithm engine may be used.

정렬자 서명을 포함하는 것에 더하여, 블록 확인(905)에서 수신된 블록 데이터는 또한 블록 번호, 블록 내의 트랜잭션 수 등을 포함할 수 있다.In addition to including the aligner signature, the block data received at block confirmation 905 may also include the block number, number of transactions within the block, and the like.

방법(800)으로 복귀하여, 스테이지 810에서 하드웨어 가속기는 블록 내의 복수의 트랜잭션을 검증한다. 도 9에서 이 기능은 블록 검증(910)에 의해 수행된다. 즉, 블록 확인(905)이 알려진 정렬자에 의해 블록이 수신되었음을 보장하는 반면, 블록 검증(910)은 블록의 개별 트랜잭션을 검증한다. 이를 위해, 블록 검증(910)은 프로토콜 프로세서(도 9에 도시되지 않음)로부터 트랜잭션 데이터, 보증 데이터, 판독 세트 데이터 및 기록 세트 데이터를 수신한다. 그 후, 블록 검증(910)은 블록 번호, 유효/무효 트랜잭션 플래그, 레이턴시 등과 같은 검증 결과를 함유하는 블록 검증 데이터를 출력한다.Returning to method 800, at stage 810 the hardware accelerator verifies a plurality of transactions within the block. In FIG. 9 this function is performed by block verify 910 . That is, while block verification 905 ensures that a block has been received by a known aligner, block verification 910 verifies the block's individual transactions. To this end, block verify 910 receives transaction data, warranty 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 containing verification results such as block number, valid/invalid transaction flags, latency, and the like.

일 실시예에서, 블록 확인(905) 및 블록 검증(910)은 블록 레벨에서 파이프라인화된다. 즉, 블록 프로세서(225)는 블록 확인(905)(파이프라인 스테이지 1)에서 트랜잭션의 제1 블록을 처리하는 반면 블록 검증(910)은 트랜잭션의 제2 블록(파이프라인 스테이지 2)을 처리할 수 있다. 다르게 말하면, 블록 확인(905)은 ECDSA 엔진(920)을 사용하여 블록 검증(910)이 제2 블록의 개별 트랜잭션을 검증함과 동시에 승인된 정렬자가 제1 블록을 송신하는 것을 보장할 수 있다.In one embodiment, block verification 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 verification 905 (pipeline stage 1) while block verification 910 may process the second block of transactions (pipeline stage 2). there is. In other words, block verification 905 can use ECDSA engine 920 to ensure that approved aligners transmit the first block while block verification 910 verifies 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 verify 905 and block verify 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 (eg, number of blocks processed per unit time).

또한, 도 8은 스테이지(810)가 스테이지 815-825로 세분될 수 있음을 예시한다. 일 실시예에서, 방법(800)의 스테이지 815-825는 도 9의 블록 검증(910)의 보다 상세한 모습을 예시하는 도 10의 파이프라인 스테이지 2a, 2b 및 2c에 대응한다.8 also 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 illustrating a more detailed view of block verify 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 of block verification 910 verifies the signature of each transaction. As shown in FIG. 10 , stage 2a includes a number of transaction confirmation blocks 1005 each including an ECDSA engine 1035 . These engines 1035 verify the signature of the client (or originator) of the transaction. That is, the ECDSA engine 1035 compares the received signature with a signature calculated based on the tx data and the generator's public key pair to ensure that the transaction was signed by a known client.

다수의 트랜잭션 확인 블록(1005)이 있기 때문에, 스테이지 2a는 다수의 트랜잭션에 대한 클라이언트 서명을 병렬로 검증할 수 있다. 블록 검증(910)이 얼마나 많은 트랜잭션 확인 블록(1005)을 포함하는 지를 결정하는 것은 설계 선택이다. 추가 트랜잭션 확인 블록(1005)을 갖는다는 것은 스테이지 2a가 더 많은 트랜잭션을 병렬로 처리할 수 있지만 가속기에서 추가 공간과 전력을 사용하는 것을 댓가로 한다는 것을 의미한다.Because there are multiple transaction verification blocks 1005, stage 2a can verify client signatures for multiple transactions in parallel. It is a design choice to determine how many transaction confirmation blocks 1005 block verification 910 includes. Having an additional transaction confirmation block 1005 means 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는 각각 다수의 ECDSA 엔진(1015)(또는 임의의 다른 유형의 서명 검증 엔진) 및 보증 정책 평가기(1020)를 포함하는 다수의 트랜잭션 VSCC 블록(1010)을 포함한다. 트랜잭션 VSCC 블록(1010)은 각각 특정 트랜잭션의 보증을 확인한다. 이를 위해 트랜잭션 VSCC 블록(1010)은 보증인 ID 및 검증 데이터를 포함하는 보증 데이터를 수신한다. 클라이언트 트랜잭션은 (도 1에 도시된 바와 같이) 다수의 보증을 받을 수 있기 때문에, 각각의 ECDSA 엔진(1015)은 보증 중 하나를 병렬로 평가할 수 있다. 즉, 트랜잭션 A가 2개의 보증을 받은 경우, ECDSA 엔진(1015A)은 제1 보증이 승인된 보증 노드에 의해 서명되었음을 확인할 수 있고 동시에 ECDSA 엔진(1015B)은 제2 보증이 승인된 보증 노드에 의해 서명되었음을 확인할 수 있다. 다시, 각각의 블록(1010)의 ECDESA 엔진(1015)의 수는 설계 선택 사항이다.Returning to method 800, block verification 910 at stage 820 verifies the endorsement of each transaction using the endorsement policy. As shown in FIG. 10 , pipeline stage 2b includes multiple transaction VSCC blocks 1010, each including multiple ECDSA engines 1015 (or any other type of signature verification engine) and endorsement policy evaluator 1020. ). Each transaction VSCC block 1010 verifies the endorsement of a particular transaction. To this end, the transaction VSCC block 1010 receives guarantee data including a guarantor ID and verification data. Since a client transaction can receive multiple guarantees (as shown in Figure 1), each ECDSA engine 1015 can evaluate one of the guarantees in parallel. That is, if transaction A has received two endorsements, the ECDSA engine 1015A can verify that the first endorsement was signed by an approved endorsement node and at the same time the ECDSA engine 1015B can confirm that the second endorsement is signed by an approved endorsement node. You can verify that it has been signed. Again, the number of ECDESA engines 1015 in each block 1010 is a design choice.

일 실시예에서, 보증 정책 평가기(1020)는 체인코드별 기반으로 보증 정책을 유지할 수 있다. 평가기(1020)는 트랜잭션이 적절한 보증을 받았음을 확인한다. 즉, 보증이 승인된 보증 노드에 의해 주어졌다고 가정하면, 평가기(1020)는 적절한 보증 노드로부터 보증을 받은 트랜잭션을 확인한다. 예를 들어, 트랜잭션이 두 은행 사이에서 금전을 이체해야 한다고 표시하는 경우, 평가기(1020)는 트랜잭션이 이들 은행 둘 모두에 의해 운영되는 보증 노드로부터 보증을 받은 것을 보장하기 위해 검사할 수 있다. 트랜잭션이 단지 하나의 은행에 대한 보증 노드에 의해 또는 트랜잭션에 영향을 받지 않는 다른 은행에 의해 보증된 경우, 평가기(1020)는 트랜잭션을 무효화할 수 있다.In one embodiment, the endorsement policy evaluator 1020 may maintain endorsement policies on a per-chaincode basis. Evaluator 1020 verifies that the transaction has been properly endorsed. That is, assuming the endorsement is given by an approved endorsement node, the evaluator 1020 verifies the transaction for which endorsement has been received from the appropriate endorsement node. For example, if a transaction indicates that money should be transferred between two banks, evaluator 1020 may check to ensure that the transaction received an endorsement from an endorsement node operated by both of these banks. Evaluator 1020 may invalidate the transaction if the transaction is endorsed by the endorsing node for only one bank or by another bank unaffected by the transaction.

스테이지 2b는 다수의 트랜잭션 VSCC 블록(1010)을 포함하기 때문에, 블록 검증(910)은 다수의 트랜잭션에 대한 보증을 병렬로 확인할 수 있다. 즉, 스테이지 2a에서 트랜잭션이 승인된 클라이언트에 의해 시작되었음을 확인한 후 스테이지 2b에서는 트랜잭션에 대한 보증이 유효하고 하나 이상의 보증 정책을 충족하는지 확인할 수 있다. 블록 검증(910)의 트랜잭션 VSCC 블록(1010)의 수는 설계 선택 사항이다.Because stage 2b includes multiple transaction VSCC blocks 1010, block verify 910 can verify the guarantees for multiple transactions in parallel. That is, after verifying in stage 2a that the transaction was initiated by an approved client, in stage 2b we can verify that the endorsement for the transaction is valid and meets one or more endorsement policies. The number of transaction VSCC blocks 1010 in block verification 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 , block verify 910 at stage 825 performs a version check and commits the write key to state database 1030 . This is done by stage 2c, which includes a transactional MVCC write block 1025 communicatively coupled to a state database 1030 and a register map (not shown in FIG. 10). Also, the register map is optionally coupled to the node's CPU (not shown). In one embodiment, transaction MVCC record block 1025 queries the read key from state database 1030 to perform a version check and, if verified, commits the valid transaction's updated record key to database 1030. To this end, the transactional MVCC record block 1025 receives read set data (each element contains a read key-version pair) and record set data (each element contains a record key-value pair) from the protocol processor. do. In one embodiment, state database 1030 includes an internal locking mechanism that does not allow reading of keys currently being written (or updated).

도 10의 스테이지 2a-2c는 파이프라인화될 수 있다. 즉, 도 9는 블록 확인(905)과 블록 검증(910) 사이의 블록 레벨 파이프라인을 예시하는 반면, 도 10은 특정 블록의 트랜잭션이 스테이지 2a-2c에서 병렬로 처리될 수 있는 트랜잭션 레벨 파이프라인을 예시한다. 즉, 스테이지 2a는 블록의 제1 트랜잭션 세트를 처리할 수 있는 반면, 스테이지 2b는 동일한 블록의 제2 트랜잭션 세트를 처리하며, 스테이지 2c는 동일한 블록의 제3 트랜잭션 세트를 처리한다. 그러나, 일 실시예에서 트랜잭션 사이의 의존성 때문에 블록 검증(910)은 동일한 블록의 트랜잭션만 처리할 수 있다. 즉, 블록 검증(910)의 한 스테이지는 제1 블록의 트랜잭션을 처리하지 못하는 반면, 다른 스테이지는 제2 블록의 트랜잭션을 처리하지 못할 수 있다.Stages 2a-2c of Figure 10 can be pipelined. That is, while Figure 9 illustrates a block-level pipeline between block verification 905 and block verification 910, Figure 10 illustrates a transaction-level pipeline in which transactions of a particular block may be processed in parallel in stages 2a-2c. exemplify 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 in the same block. That is, one stage of block verification 910 may not process transactions of a first block, while another stage may not process transactions of a second block.

방법(800)으로 복귀하여, 스테이지 830에서 블록 검증(910)은 레지스터(예를 들어, 레지스터 맵(230))에 검증 프로세스를 수행한 결과를 저장한다. 도 11에 도시된 바와 같이, 레지스터 맵은 블록 검증(910)으로부터 블록 검증 데이터를 수신하며, 이는 블록 번호, 유효/무효 트랜잭션 플래그, 레이턴시(블록 모니터에 의해 측정됨) 등을 함유할 수 있다. 검증 결과는 레지스터 맵에 기록되고, 여기서, CPU(205)가 AXI-lite 또는 PCIe 인터페이스를 사용하여 검증 결과에 액세스할 수 있다. 일 실시예에서, 현재 저장된 검증 결과가 CPU(205)에 의해 판독될 때까지 새로운 검증 결과가 레지스터 맵(230)에 기록될 수 없다. 또한, 도 11은 앞서 설명한 바와 같이 하드웨어 가속기의 레지스터 맵(230)이 CPU(205)에 의해 액세스 가능한 시스템(1100)을 예시하지만, 가속기는 CPU(205)를 사용하지 않을 수 있고 대신 CPU(205)에서 실행되는 소프트웨어의 도움 없이 검증 프로세스를 완료할 수 있다.Returning to method 800 , block verify 910 at stage 830 stores the result of performing the verify process in a register (eg, register map 230 ). As shown in FIG. 11, the register map receives block verify data from block verify 910, which may contain block number, valid/invalid transaction flags, latency (as measured by the block monitor), and the like. The verification result is written to the register map, where the CPU 205 can access the verification result using an AXI-lite or PCIe interface. In one embodiment, new verification results cannot be written to register map 230 until the currently stored verification results have been read by CPU 205 . 11 also illustrates a system 1100 in which the hardware accelerator's register map 230 is accessible by the CPU 205 as described above, the accelerator may not use the CPU 205 and instead the CPU 205 ) can complete the verification process without the help of software running on it.

스테이지 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 verification result to determine whether each individual transaction in the transaction block has been verified. After that, the client can 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 may be committed to the ledger, and may include a valid/invalid flag indicating whether the committed transaction is valid.

앞서, 본 개시에 제시된 실시예를 참조하였다. 그러나, 본 개시의 범위는 특정하게 설명된 실시예에 제한되지 않는다. 대신에, 다른 실시예와 관련이 있든 없든, 설명된 특징 및 요소의 임의의 조합이 고려된 실시예를 구현하고 실시하기 위해 고려된다. 더욱이, 본 출원에 개시된 실시예는 다른 가능한 해결책에 비해 또는 종래 기술에 비해 이점을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 개시의 범위를 제한하지 않는다. 따라서, 앞서 설명한 양태, 특징, 실시예 및 이점은 단지 예시적인 것이며 청구항(들)에서 명시적으로 인용된 경우를 제외하고는 첨부된 청구항의 요소 또는 제한으로 고려되지 않는다.Earlier, reference was made to the examples presented in this disclosure. However, the scope of the present disclosure is not limited to the specifically described embodiments. Instead, any combination of the described features and elements, whether related to other embodiments or not, is contemplated for implementing and practicing the contemplated embodiments. Moreover, while the embodiments disclosed herein may achieve advantages over other possible solutions or over the prior art, it is not intended to limit the scope of the present disclosure whether a particular advantage is achieved by a given embodiment. Accordingly, the foregoing aspects, features, embodiments and advantages are illustrative only and are not considered elements or limitations of the appended claims except where expressly recited in a claim(s).

본 기술 분야의 숙련자라면 이해할 수 있는 바와 같이, 본 출원에 개시된 실시예는 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 양태는 전적 하드웨어 실시예, 전적 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함) 또는 소프트웨어 및 하드웨어 양태를 조합한 실시예의 형태를 취할 수 있으며, 이들은 모두 본 출원에서 일반적으로 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있다. 더욱이, 양태는 컴퓨터 판독 가능 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독 가능 매체(들)에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.As will be appreciated by those skilled in the art, the embodiments disclosed in this application may be implemented as systems, methods, or computer program products. 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 are generally referred to herein as " may be referred to as "circuit", "module" or "system". Furthermore, 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 thereon.

하나 이상의 컴퓨터 판독 가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 신호 매체 또는 컴퓨터 판독 가능 저장 매체일 수 있다. 컴퓨터 판독 가능 저장 매체는 예를 들어 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 디바이스 또는 이들의 임의의 적절한 조합일 수 있지만 이에 제한되지 않는다. 컴퓨터 판독 가능 저장 매체의 보다 특정한 예(일부 목록)는 다음을 포함한다: 하나 이상의 배선을 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(random access memory), ROM(read-only memory), 지울 수 있는 프로그램 가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 CD-ROM(compact disc read-only memory), 광학 저장 디바이스, 자기 저장 디바이스 또는 이들의 임의의 적절한 조합. 본 문서에 관련하여, 컴퓨터 판독 가능 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 함유하거나 저장할 수 있는 임의의 유형의 매체이다.Any combination of one or more computer readable medium(s) may be used. A computer readable medium may be a computer readable signal medium or a computer readable storage medium. A 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 thereof. More specific examples (a partial list) of computer readable storage media include: electrical connections having one or more wires, portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erase programmable read-only memory (EPROM or flash memory), optical fiber, portable compact disc read-only memory (CD-ROM), optical storage device, magnetic storage device, or any suitable combination thereof. In the context of this document, 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 carrier may contain a propagated data signal having computer readable program code embodied therein, for example in baseband or as part of a carrier wave. These propagating signals 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 may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate or transport a program for use by or in connection with an instruction execution system, apparatus or device.

컴퓨터 판독 가능 매체에 구현된 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등 또는 이들의 임의의 적절한 조합을 포함하지만 이에 제한되지 않는 임의의 적절한 매체를 사용하여 송신될 수 있다.Program code embodied in a computer readable medium may be transmitted using any suitable medium, including but not limited to wireless, wired, fiber optic cable, RF, etc., or any suitable combination thereof.

본 개시의 양태를 위한 동작을 수행하기 위한 컴퓨터 프로그램 코드는 Java, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 프로그램 코드는 전적으로 사용자 컴퓨터에서, 부분적으로 사용자 컴퓨터에서, 독립 실행형 소프트웨어 패키지로, 부분적으로는 사용자 컴퓨터에서 그리고 부분적으로는 원격 컴퓨터에서 또는 전적으로 원격 컴퓨터나 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 LAN(local area network) 또는 WAN(wide area network)을 비롯한 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 (예를 들어, 인터넷 서비스 공급자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대한 연결이 형성될 수 있다.Computer program code for performing operations for aspects of the present disclosure may include one or more programming languages, including object oriented programming languages such as Java, Smalltalk, C++, etc., and conventional procedural programming languages such as the "C" programming language or similar programming languages. can be written in any combination of The program code may run entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or (e.g., using an Internet service provider). A connection to an external computer (via the Internet) can be established.

본 개시의 양태는 본 개시에 제시된 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 아래에서 설명된다. 흐름도 예시 및/또는 블록도의 각각의 블록, 및 흐름도 예시 및/또는 블록도의 블록 조합은 컴퓨터 프로그램 명령어에 의해 구현될 수 있음을 이해할 것이다. 이러한 컴퓨터 프로그램 명령어는 범용 컴퓨터, 특수 목적 컴퓨터 또는 기타 프로그램 가능한 데이터 처리 장치의 프로세서에 제공되어 컴퓨터의 프로세서 또는 기타 프로그램 가능한 데이터 처리 장치를 통해 실행되는 명령어가 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/행위를 구현하기 위한 수단을 생성하도록 하는 머신을 생성할 수 있다.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 herein. It will be appreciated that each block of the flowchart illustrations and/or block diagrams, and block combinations of the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. Such computer program instructions are provided to a processor of a general-purpose computer, special purpose computer, or other programmable data processing device so that the instructions executed by the computer's processor or other programmable data processing device are shown in a block or blocks in a flowchart and/or block diagram. You can create a machine that allows you to create means for implementing specified functions/behaviors.

이러한 컴퓨터 프로그램 명령어는 또한 컴퓨터 판독 가능 매체에 저장되어, 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치 또는 다른 디바이스가, 컴퓨터 판독 가능 매체에 저장된 명령어가 흐름도 및/또는 블록도 블록 또는 블록에 지정된 기능/행위를 구현하는 명령어를 포함하는 제조 물품을 생성하도록 특정 방식으로 기능하도록 지시할 수 있다.Such computer program instructions may also be stored on a computer readable medium so that a computer, other programmable data processing apparatus, or other device can use the instructions stored on the computer readable medium to perform flowcharts and/or block diagram blocks or the functions/acts specified in the blocks. It can be directed to function in a particular way to create an article of manufacture that contains the instructions it implements.

컴퓨터 프로그램 명령어는 또한 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치 또는 다른 디바이스에 로딩되어 컴퓨터, 다른 프로그램 가능한 장치 또는 다른 디바이스에서 일련의 동작 단계가 수행되어 컴퓨터 또는 다른 프로그램 가능한 장치에서 실행되는 명령어가 흐름도 및/또는 블록도 블록 또는 블록에 지정된 기능/행위를 구현하기 위한 프로세스를 제공하도록 컴퓨터 구현 프로세스를 생성하게 할 수 있다.Computer program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device so that a series of operational steps are performed in the computer, other programmable apparatus, or other device such that the instructions executed in the computer or other programmable apparatus are flow diagrams and/or Alternatively, a block may also cause a computer-implemented process to be created to provide a block or a process for implementing the function/behavior specified in the block.

도면의 흐름도 및 블록도는 본 발명의 다양한 예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록도의 각각의 블록은 지정된 로직 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 모듈, 세그먼트 또는 명령어의 일부를 나타낼 수 있다. 일부 대안적인 구현에서, 블록에 언급된 기능은 도면에 언급된 순서를 벗어나 이루어질 수 있다. 예를 들어, 연속으로 나타내어진 2개의 블록은 실제로 실질적으로 동시에 실행될 수 있거나 관련된 기능에 따라 블록이 때때로 역순으로 실행될 수 있다. 블록도들 및/또는 흐름도 예시의 각각의 블록, 및 블록도들 및/또는 흐름도 예시 내의 블록들의 조합들은, 특정된 기능들 또는 동작들을 수행하거나 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들을 수행하는 특수 목적 하드웨어 기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의해야 할 것이다.The flow diagrams and block diagrams in the drawings illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various examples of the present invention. In this regard, each block of a flowchart or block diagram may represent a module, segment, or portion of instructions that includes one or more executable instructions for implementing a specified logic function(s). In some alternative implementations, functions recited in blocks may occur out of the order recited in the figures. For example, two blocks presented in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in reverse order depending on the function involved. Each block of block diagrams and/or flow diagram illustrations, and combinations of blocks within block diagrams and/or flow diagram illustrations, is special purpose that performs specified functions or operations or performs combinations of special purpose hardware and computer instructions. It should also be noted that it can be implemented by hardware based systems.

개시된 기술은 청구범위에 설명된 것에 더하여 다음의 비제한적인 예로 표현될 수 있다.In addition to what is described in the claims, the disclosed technology can be represented in the following non-limiting examples.

실시예 1. 블록체인에 대한 검증 프로세스를 가속화하기 위한 집적 회로에 있어서, 블록체인의 노드로부터 트랜잭션 블록을 함유하는 복수의 패킷을 수신하도록 구성된 네트워크 인터페이스; 트랜잭션에 관한 데이터를 생성하기 위해 복수의 패킷을 파싱하도록 구성된 프로토콜 프로세서; 및 블록 프로세서로서, 블록의 서명을 확인하고; 블록의 각각의 트랜잭션을 검증하고; 트랜잭션의 검증 결과를 저장하도록 구성된, 상기 블록 프로세서를 포함한다.Embodiment 1. An integrated circuit for accelerating a verification process for a blockchain, comprising: a network interface configured to receive a plurality of packets containing a block of transactions from a node in the blockchain; a protocol processor configured to parse the plurality of packets to generate data relating to the transaction; and a block processor that verifies the signature of a block; verify each transaction in the block; and the block processor, configured to store a verification result of a transaction.

실시예 2. 예 1의 집적 회로에 있어서, 상기 집적 회로는 SoC(system on a chip), FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit) 중 적어도 하나를 포함한다.Embodiment 2. The integrated circuit of Example 1, wherein the integrated circuit includes at least one of a system on a chip (SoC), a field programmable gate array (FPGA), and an application specific integrated circuit (ASIC).

실시예 3. 예 2의 집적 회로에 있어서, SoC 또는 FPGA는 프로그램 가능 로직을 포함한다.Embodiment 3. The integrated circuit of example 2, wherein the SoC or FPGA includes programmable logic.

실시예 4. 예 2의 집적 회로에 있어서, ASIC는 강화된 회로부만을 포함한다.Embodiment 4. The integrated circuit of Example 2, wherein the ASIC includes only enhanced circuitry.

실시예 5. 예 1의 집적 회로에 있어서, 블록 프로세서는 블록의 서명이 블록체인에서 정렬자의 알려진 서명과 일치하는지 확인하도록 구성된 제1 서명 알고리즘 엔진을 포함하는 블록 확인; 및 블록 내의 각각의 트랜잭션을 검증하도록 구성된 블록 검증을 포함한다.Embodiment 5. The integrated circuit of example 1, wherein the block processor comprises: block verification comprising a first signature algorithm engine configured to verify that a signature of a block matches a known signature of an aligner in a blockchain; and block verification configured to verify each transaction within the block.

실시예 6. 예 5의 집적 회로에 있어서, 블록 검증은 트랜잭션에 대응하는 서명이 블록체인을 사용하도록 승인된 클라이언트의 알려진 서명과 일치하는지 확인하도록 구성된 제2 서명 알고리즘 엔진을 포함하는 트랜잭션 확인 모듈; 트랜잭션 검증 시스템 체인코드(VSCC) 블록으로서, 트랜잭션의 보증이 블록체인의 알려진 보증 노드에 의해 서명되었는지 확인하도록 구성된 제3 서명 알고리즘 엔진; 및 보증이 보증 정책을 충족시키는 것을 보장하도록 구성된 보증 정책 평가기를 포함하는, 상기 트랜잭션 검증 시스템 체인코드(VSCC) 블록; 및 상태 데이터베이스에서 트랜잭션과 연관된 키-값 쌍을 판독하고 기록하도록 구성된 트랜잭션 다중 버전 동시성 제어(MVCC) 기록 블록을 포함한다.Embodiment 6. The integrated circuit of example 5, wherein the block verification comprises a transaction verification module comprising 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 transaction verification system chaincode (VSCC) block, comprising: a third signature algorithm engine configured to verify that a transaction's endorsement was signed by a known endorsement node in the blockchain; and an endorsement policy evaluator configured to ensure that an endorsement meets an endorsement policy; and a transaction multiple version concurrency control (MVCC) write block configured to read and write key-value pairs associated with transactions in the state database.

실시예 7. 예 6의 집적 회로에 있어서, 블록 검증은 제1 트랜잭션 세트의 서명을 확인하기 위해 병렬로 동작하도록 구성된 복수의 트랜잭션 확인 모듈; 및 제2 트랜잭션 세트의 보증을 확인하기 위해 병렬로 동작하도록 구성된 복수의 트랜잭션 VSCC 블록을 포함하며, 복수의 트랜잭션 확인 모듈은 파이프라인의 제1 스테이지를 형성하고 복수의 트랜잭션 VSCC 블록은 복수의 트랜잭션 VSCC 블록이 제2 트랜잭션 세트를 처리하는 것과 동시에 복수의 트랜잭션 확인 모듈이 제1 트랜잭션 세트를 처리하도록 파이프라인의 제2 스테이지를 형성한다.Embodiment 7 The integrated circuit of example 6, wherein the block verification comprises a plurality of transaction verification modules configured to operate in parallel to verify signatures of the first set of transactions; and a plurality of transaction VSCC blocks configured to operate in parallel to verify endorsements of a second set of transactions, wherein the plurality of transaction verification modules form a first stage of a pipeline and the plurality of transaction VSCC blocks comprise a plurality of transaction VSCC blocks. A plurality of transaction confirmation modules form a second stage of the pipeline to process the first set of transactions at the same time the block processes the second set of transactions.

실시예 8. 예 7의 집적 회로에 있어서, 복수의 트랜잭션 확인 모듈 각각은 트랜잭션 중 하나의 보증 세트를 병렬로 확인하기 위한 복수의 알고리즘 서명 엔진을 포함한다.Example 8. The integrated circuit of example 7, wherein each of the plurality of transaction verification modules includes a plurality of algorithmic signature engines for verifying in parallel one set of guarantees during a transaction.

실시예 9. 예 2의 집적 회로에서, 블록 확인은 파이프라인에서 제1 스테이지를 형성하는 반면 블록 검증은 파이프라인에서 제2 스테이지를 형성하며, 따라서, 블록 검증이 블록체인에 대한 트랜잭션의 제2 블록을 처리하는 것과 동시에 블록 확인이 블록체인에 대한 트랜잭션의 제1 블록을 처리할 수 있다.Embodiment 9. The integrated circuit of Example 2, wherein block verification forms a first stage in the pipeline while block verification forms a second stage in the pipeline, such that block verification forms the second stage of a transaction to the blockchain. Concurrent with processing the block, block confirmation may process the first block of transactions to the blockchain.

실시예 10. 방법에 있어서, 하드웨어 가속기에서 블록체인의 원장에 커밋될 트랜잭션 블록을 수신하는 단계; 하드웨어 가속기에서 블록의 서명을 확인하는 단계; 하드웨어 가속기에서 블록의 각각의 트랜잭션을 검증하는 단계; 하드웨어 가속기에서 트랜잭션의 검증 결과를 저장하는 단계; 및 트랜잭션을 원장에 커밋하고 검증 결과에 기초하여 트랜잭션이 유효한지 여부를 표시하는 단계를 포함한다.Embodiment 10. A method comprising: receiving a transaction block to be committed to a ledger of a blockchain from a hardware accelerator; verifying the signature of the block in the hardware accelerator; verifying each transaction in the block in the hardware accelerator; Storing the verification result of the transaction in the hardware accelerator; and committing the transaction to the ledger and indicating whether the transaction is valid based on the verification result.

실시예 11. 예 10의 방법에 있어서, 트랜잭션 블록을 수신하는 단계는 트랜잭션 블록을 포함하는 복수의 패킷을 수신하는 단계를 포함하며, 방법은 하드웨어 가속기에서 트랜잭션에 관한 데이터를 생성하기 위해 복수의 패킷을 파싱하는 단계를 더 포함한다.Embodiment 11 The method of example 10, wherein receiving the transaction block comprises receiving a plurality of packets that include the transaction block, the method comprising the plurality of packets to generate data relating to the transaction at the hardware accelerator. Parsing is further included.

실시예 12. 예 10의 방법에 있어서, 블록 내의 각각의 트랜잭션을 검증하는 단계는 블록의 서명이 블록체인에 있는 정렬자의 알려진 서명과 일치하는지 확인하는 단계를 더 포함한다.Example 12 The method of example 10, wherein verifying each transaction in the block further comprises verifying that the signature of the block matches a known signature of an orderer in the blockchain.

실시예 13. 예 10의 방법에 있어서, 블록 내의 각각의 트랜잭션을 검증하는 단계는 트랜잭션의 보증이 블록체인의 알려진 보증 노드에 의해 서명되었는지 확인하는 단계; 및 트랜잭션의 보증이 보증 정책을 충족하는 것을 보장하는 단계를 더 포함한다.Example 13 The method of example 10, wherein verifying each transaction in the block includes verifying that the endorsement of the transaction was signed by a known endorsement node of the blockchain; and ensuring that the endorsement of the transaction satisfies the endorsement policy.

실시예 14. 블록체인에 대한 검증 프로세스를 가속화하기 위한 집적 회로에 있어서, 블록체인의 원장에 커밋될 트랜잭션 블록에 대응하는 복수의 패킷을 수신하도록 구성된 데이터 삽입기; 트랜잭션 블록의 상이한 컴포넌트들에 대한 해시를 생성하도록 구성된 해시 계산기; 해시가 이전에 계산된 해시와 일치하는 지를 결정하도록 구성된 해시 검사기; 및 트랜잭션 블록을 검증하기 위한 작업을 생성하도록 구성된 작업 생성기를 포함한다.Embodiment 14. An integrated circuit for accelerating a verification process for a blockchain comprising: a data inserter configured to receive a plurality of packets corresponding to a block of transactions to be committed to a ledger of a blockchain; a hash calculator configured to generate hashes for the different components of the transaction block; a hash checker configured to determine whether the hash matches a previously computed hash; and a job generator configured to create a job to verify the transaction block.

실시예 15. 예 14의 집적 회로에 있어서, 집적 회로는 SoC(system on a chip), FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit) 중 적어도 하나를 포함한다.Embodiment 15 The integrated circuit of Example 14, wherein the integrated circuit includes at least one of a system on a chip (SoC), a field programmable gate array (FPGA), or an application specific integrated circuit (ASIC).

실시예 16. 예 15의 집적 회로에 있어서, SoC 또는 FPGA는 프로그램 가능 로직을 포함한다.Embodiment 16 The integrated circuit of example 15, wherein the SoC or FPGA includes programmable logic.

실시예 17. 예 15의 집적 회로에 있어서, ASIC는 강화된 회로부만을 포함한다.Embodiment 17 The integrated circuit of example 15, wherein the ASIC includes only enhanced circuitry.

실시예 18. 예 14의 집적 회로에 있어서, 트랜잭션의 블록은 블록 헤더, 복수의 트랜잭션 및 메타데이터를 포함하고, 블록 헤더, 복수의 트랜잭션 각각 및 메타데이터는 복수의 패킷 중 개별 패킷으로 발신되며, 복수의 패킷은 블록 또는 복수의 트랜잭션에 대응하는 서명된 인증서를 함유하지 않는다.Embodiment 18 The integrated circuit of example 14, 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 metadata are sent as individual packets of the plurality of packets; The plurality of packets do not contain signed certificates corresponding to the block or the plurality of transactions.

실시예 19. 예 18의 집적 회로에 있어서, 블록체인의 승인된 노드에 대응하는 서명된 인증서의 로컬 사본을 저장하는 ID 캐시를 더 포함하고, 데이터 삽입기는 복수의 패킷에 포함된 ID를 사용하여 ID 캐시로부터 트랜잭션 블록에 대응하는 서명된 인증서를 검색하도록 구성된다.Embodiment 19 The integrated circuit of example 18, further comprising an ID cache storing local copies of signed certificates corresponding to authorized nodes in the blockchain, wherein the data inserter uses the IDs contained in the plurality of packets to and retrieve the signed certificate corresponding to the transaction block from the ID cache.

실시예 20. 예 19의 집적 회로에 있어서,Example 20. The integrated circuit of Example 19,

복수의 패킷의 데이터 및 검색된 서명 인증서를 사용하여 트랜잭션 블록을 재구성하도록 구성된 데이터 추출기를 더 포함하고, 해시 계산기는 재구성된 트랜잭션 블록을 사용하여 해시를 생성하도록 구성되고, 해시 검사기는 생성된 해시가 이전에 계산된 해시와 일치하는지 여부를 검사하여 트랜잭션 블록이 구문 오류를 함유하지 않는 것을 보장하도록 하기 위해 구성된다.Further comprising a data extractor configured to reconstruct a transaction block using data of the plurality of packets and the retrieved signing certificate, a hash calculator configured to generate a hash using the reconstructed transaction block, and a hash checker configured to determine whether the generated hash is previously It is configured to ensure that the transaction block does not contain syntax errors by checking whether it matches the hash computed in

앞서 설명한 내용은 특정한 예에 관한 것이지만, 그 기본 범위를 벗어나지 않고 다른, 그리고, 추가적인 예를 안출할 수 있으며, 그 범위는 다음 청구범위에 의해 결정된다.Although the foregoing is directed to specific examples, other and additional examples may be devised without departing from its basic scope, the scope of which is determined by the following claims.

Claims (15)

컴퓨팅 시스템으로서,
프로세서;
블록체인의 원장을 저장하는 메모리; 및
하드웨어 가속기로서,
상기 원장에 커밋될 트랜잭션 블록에 대응하는 복수의 패킷을 수신하고;
상기 트랜잭션 블록의 상이한 컴포넌트들에 대한 해시를 생성하고;
상기 해시가 이전에 계산된 해시와 일치한다고 결정하면, 상기 하드웨어 가속기에서 상기 트랜잭션 블록을 검증하기 위한 작업을 생성하도록 구성되는, 상기 하드웨어 가속기를 포함하며,
상기 프로세서 또는 상기 하드웨어 가속기 중 하나는 상기 트랜잭션 블록이 유효하다고 결정하면 상기 트랜잭션 블록을 상기 원장에 커밋하도록 구성되는, 컴퓨팅 시스템.
As a computing system,
processor;
memory that stores the ledger of the blockchain; and
As a hardware accelerator,
receive a plurality of packets corresponding to a transaction block to be committed to the ledger;
generate hashes for the different components of the transaction block;
a hardware accelerator configured to generate a task to verify the transaction block at the hardware accelerator upon determining that the hash matches a previously computed hash;
wherein one of the processor or the hardware accelerator is configured to commit the transaction block to the ledger if it determines that the transaction block is valid.
제1항에 있어서, 상기 트랜잭션 블록은 블록 헤더, 복수의 트랜잭션 및 메타데이터를 포함하고, 상기 블록 헤더, 상기 복수의 트랜잭션 각각, 및 상기 메타데이터는 상기 복수의 패킷 중 개별 패킷으로 발신되는, 컴퓨팅 시스템.The computing method of claim 1 , wherein the transaction block 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 as individual packets of the plurality of packets. system. 제2항에 있어서, 상기 복수의 패킷은 상기 블록 또는 상기 복수의 트랜잭션에 대응하는 서명된 인증서를 함유하지 않는, 컴퓨팅 시스템.3. The computing system of claim 2, wherein the plurality of packets do not contain signed certificates corresponding to the block or the plurality of transactions. 제3항에 있어서, 상기 하드웨어 가속기는,
상기 블록체인의 승인된 노드에 대응하는 상기 서명된 인증서의 로컬 사본을 저장하는 ID 캐시; 및
상기 복수의 패킷에 포함된 ID를 사용하여 상기 ID 캐시로부터 상기 트랜잭션 블록에 대응하는 서명된 인증서를 검색하도록 구성된 데이터 삽입기를 포함하는, 컴퓨팅 시스템.
The method of claim 3, wherein the hardware accelerator,
an ID cache storing local copies of the signed certificates corresponding to authorized nodes in the blockchain; and
and a data inserter configured to retrieve a signed certificate corresponding to the transaction block from the ID cache using the ID included in the plurality of packets.
제4항에 있어서, 상기 하드웨어 가속기는,
상기 복수의 패킷의 데이터 및 상기 검색된 서명된 인증서를 사용하여 상기 트랜잭션 블록을 재구성하도록 구성된 데이터 추출기;
상기 재구성된 트랜잭션 블록을 사용하여 상기 트랜잭션 블록에 대응하는 해시를 생성하도록 구성된 해시 계산기; 및
상기 트랜잭션 블록이 구문 오류를 함유하지 않도록 하기 위해 상기 생성된 해시가 이전에 계산된 해시와 일치하는지 검사하도록 구성된 해시 검사기를 포함하는, 컴퓨팅 시스템.
The method of claim 4, wherein the hardware accelerator,
a data extractor configured to reconstruct the transaction block using data of the plurality of packets and the retrieved signed certificate;
a hash calculator configured to generate a hash corresponding to the transaction block using the reconstructed transaction block; and
and a hash checker configured to check that the generated hash matches a previously computed hash to ensure that the transaction block does not contain syntax errors.
컴퓨팅 시스템으로서,
프로세서;
블록체인의 원장을 저장하는 메모리; 및
하드웨어 가속기로서,
상기 원장에 커밋될 트랜잭션 블록을 수신하고;
블록의 서명을 확인하고;
상기 블록의 각각의 트랜잭션을 검증하고;
상기 트랜잭션의 검증 결과를 저장하도록 구성된, 상기 하드웨어 가속기를 포함하며,
상기 프로세서 또는 상기 하드웨어 가속기 중 하나는 상기 트랜잭션을 상기 원장에 커밋하도록 구성되는, 컴퓨팅 시스템.
As a computing system,
processor;
memory that stores the ledger of the blockchain; and
As a hardware accelerator,
receive a block of transactions to be committed to the ledger;
verify the signature of the block;
verify each transaction in the block;
The hardware accelerator, configured to store a verification result of the transaction,
and one of the processor or the hardware accelerator is configured to commit the transaction to the ledger.
제6항에 있어서, 상기 하드웨어 가속기는,
상기 블록체인의 다른 노드로부터 상기 트랜잭션 블록을 수신하도록 구성된 네트워크 인터페이스로서, 상기 트랜잭션 블록은 복수의 패킷에 포함되는, 상기 네트워크 인터페이스;
상기 트랜잭션에 관한 데이터를 생성하기 위해 상기 복수의 패킷을 파싱하도록 구성된 프로토콜 프로세서; 및
상기 프로토콜 프로세서로부터 상기 데이터를 수신하고, 상기 블록의 서명을 확인하고, 상기 블록 내의 각각의 트랜잭션을 검증하도록 구성된 블록 프로세서를 포함하는, 컴퓨팅 시스템.
The method of claim 6, wherein the hardware accelerator,
a network interface configured to receive the transaction block from another node of the blockchain, the transaction block being included in a plurality of packets;
a protocol processor configured to parse the plurality of packets to generate data relating to the transaction; and
and a block processor configured to receive the data from the protocol processor, verify the signature of the block, and verify each transaction within the block.
제7항에 있어서, 상기 블록 프로세서는,
상기 블록의 상기 서명이 상기 블록체인에서 정렬자의 알려진 서명과 일치하는지 확인하도록 구성된 제1 서명 알고리즘 엔진을 포함하는 블록 확인; 및
상기 블록의 각각의 트랜잭션을 검증하도록 구성된 블록 검증을 포함하는, 컴퓨팅 시스템.
The method of claim 7, wherein the block processor,
block verification comprising a first signature algorithm engine configured to verify that the signature of the block matches a known signature of a sorter in the blockchain; and
and block verification configured to verify each transaction in the block.
제8항에 있어서, 상기 블록 검증은,
상기 트랜잭션에 대응하는 서명이 상기 블록체인을 사용하도록 승인된 클라이언트의 알려진 서명과 일치하는지 확인하도록 구성된 제2 서명 알고리즘 엔진을 포함하는 트랜잭션 확인 모듈;
트랜잭션 검증 시스템 체인코드(VSCC) 블록으로서,
상기 트랜잭션의 보증이 상기 블록체인의 알려진 보증 노드에 의해 서명되었는지 확인하도록 구성된 제3 서명 알고리즘 엔진; 및
상기 보증이 보증 정책을 충족시키는 것을 보장하도록 구성된 보증 정책 평가기를 포함하는, 상기 트랜잭션 검증 시스템 체인코드(VSCC) 블록; 및
상태 데이터베이스에서 상기 트랜잭션과 연관된 키-값 쌍을 판독하고 기록하도록 구성된 트랜잭션 다중 버전 동시성 제어(MVCC) 기록 블록을 포함하는, 컴퓨팅 시스템.
The method of claim 8, wherein the block verification,
a transaction verification module comprising a second signature algorithm engine configured to verify that a signature corresponding to the transaction matches a known signature of a client authorized to use the blockchain;
As a transaction verification system chaincode (VSCC) block,
a third signature algorithm engine configured to verify that an endorsement of the transaction was signed by a known endorsement node of the blockchain; and
the transaction verification system chaincode (VSCC) block comprising an endorsement policy evaluator configured to ensure that the endorsement meets an endorsement policy; and
and a transaction multiple version concurrency control (MVCC) write block configured to read and write key-value pairs associated with the transaction in a state database.
제1항 또는 제6항에 있어서, 상기 하드웨어 가속기는 SoC(system on a chip), FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit) 중 적어도 하나를 포함하는, 컴퓨팅 시스템.The computing system according to claim 1 or 6, wherein the hardware accelerator includes at least one of a system on a chip (SoC), a field programmable gate array (FPGA), or an application specific integrated circuit (ASIC). 방법으로서,
하드웨어 가속기에서, 블록체인의 원장에 커밋될 트랜잭션 블록에 대응하는 복수의 패킷을 수신하는 단계;
상기 하드웨어 가속기에서, 상기 트랜잭션 블록의 상이한 컴포넌트들에 대한 해시를 계산하는 단계;
상기 하드웨어 가속기에서, 상기 해시가 이전에 계산된 해시와 일치하는지 결정하는 단계; 및
상기 하드웨어 가속기에서, 상기 트랜잭션 블록을 검증하는 작업을 생성하는 단계를 포함하는, 방법.
As a method,
Receiving, at the hardware accelerator, a plurality of packets corresponding to the transaction block to be committed to the ledger of the blockchain;
at the hardware accelerator, calculating hashes for the different components of the transaction block;
determining, at the hardware accelerator, whether the hash matches a previously computed hash; and
generating, at the hardware accelerator, a task to verify the transaction block.
제11항에 있어서, 상기 트랜잭션 블록은 블록 헤더, 복수의 트랜잭션 및 메타데이터를 포함하고, 상기 블록 헤더, 상기 복수의 트랜잭션 각각, 및 상기 메타데이터는 상기 복수의 패킷 중 개별 패킷으로 발신되는, 방법.12. The method of claim 11 , wherein the transaction block 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 as individual packets of the plurality of packets. . 제12항에 있어서, 상기 복수의 패킷은 상기 블록 또는 상기 복수의 트랜잭션에 대응하는 서명된 인증서를 함유하지 않는, 방법.13. The method of claim 12, wherein the plurality of packets do not contain signed certificates corresponding to the block or the plurality of transactions. 제13항에 있어서,
상기 하드웨어 가속기의 ID 캐시에, 상기 블록체인의 승인된 노드에 대응하는 상기 서명된 인증서의 로컬 사본을 저장하는 단계,
상기 복수의 패킷에 포함된 ID를 사용하여 상기 ID 캐시로부터 상기 트랜잭션 블록에 대응하는 상기 서명된 인증서를 검색하는 단계를 더 포함하는, 방법.
According to claim 13,
storing, in an identity cache of the hardware accelerator, a local copy of the signed certificate corresponding to an authorized node of the blockchain;
and retrieving the signed certificate corresponding to the transaction block from the ID cache using the ID included in the plurality of packets.
제14항에 있어서,
상기 복수의 패킷의 데이터 및 상기 검색된 서명된 인증서를 사용하여 상기 트랜잭션 블록을 재구성하는 단계를 더 포함하며,
상기 해시는 상기 재구성된 트랜잭션 블록을 사용하여 계산되고,
상기 해시가 이전에 계산된 해시와 일치한다고 결정하는 것은 상기 트랜잭션 블록이 구문 오류를 함유하는지 여부를 나타내는, 방법.
According to claim 14,
Reconstructing the transaction block using data of the plurality of packets and the retrieved signed certificate;
the hash is calculated using the reconstructed transaction block;
and determining that the hash matches a previously computed hash indicates whether the transaction block contains a syntax error.
KR1020237016456A 2020-10-28 2021-06-22 Blockchain Machine Network Acceleration Engine KR20230097062A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
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/083,195 2020-10-28
US17/084,942 2020-10-30
US17/084,942 US11657040B2 (en) 2020-10-30 2020-10-30 Blockchain machine network acceleration engine
PCT/US2021/038528 WO2022093335A1 (en) 2020-10-28 2021-06-22 Blockchain machine network acceleration engine

Publications (1)

Publication Number Publication Date
KR20230097062A true KR20230097062A (en) 2023-06-30

Family

ID=76972009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237016456A KR20230097062A (en) 2020-10-28 2021-06-22 Blockchain Machine Network Acceleration Engine

Country Status (4)

Country Link
EP (1) EP4237984A1 (en)
JP (1) JP2023547817A (en)
KR (1) KR20230097062A (en)
WO (1) WO2022093335A1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761877B2 (en) * 2017-07-21 2020-09-01 Intel Corporation Apparatuses, methods, and systems for blockchain transaction acceleration
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

Also Published As

Publication number Publication date
WO2022093335A1 (en) 2022-05-05
JP2023547817A (en) 2023-11-14
EP4237984A1 (en) 2023-09-06

Similar Documents

Publication Publication Date Title
US11599555B2 (en) Data manifest as a blockchain service
Androulaki et al. Hyperledger fabric: a distributed operating system for permissioned blockchains
US11615055B2 (en) Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
US10938567B2 (en) Parallel-chain architecture for blockchain systems
US20230161756A1 (en) Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
EP3776208B1 (en) Runtime self-correction for blockchain ledgers
US11196542B2 (en) Checkpointing for increasing efficiency of a blockchain
US20190354518A1 (en) Chain mesh network for decentralized transaction systems
US20210326867A1 (en) Fork-Tolerant Consensus Protocol
US10904009B2 (en) Blockchain implementing delta storage
US20200394648A1 (en) Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
US20200396072A1 (en) Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
EP3864817B1 (en) Blockchain timestamp agreement
CN109493203A (en) Data accounting method, device and storage medium
WO2020108289A1 (en) Database system, node and method
US20200050691A1 (en) Database node functional testing
KR20220088956A (en) Systems and methods for providing specialized proof of confidential knowledge
US20090192761A1 (en) Performance-testing a system with functional-test software and a transformation-accelerator
CN115186304B (en) Transaction data verification method and system based on block chain
EP3983923A1 (en) Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
US20200394162A1 (en) Operation management method for distributed ledger system, operation management system for distributed ledger system, and operation management program for distributed ledger system
US11743051B2 (en) Blockchain machine compute acceleration engine with a block verify and a block validate
US11657040B2 (en) Blockchain machine network acceleration engine
CN111917729B (en) Dynamic injection test method and device and related equipment
KR20230097062A (en) Blockchain Machine Network Acceleration Engine

Legal Events

Date Code Title Description
A201 Request for examination