KR20230097062A - Blockchain Machine Network Acceleration Engine - Google Patents
Blockchain Machine Network Acceleration Engine Download PDFInfo
- 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
Links
- 230000001133 acceleration Effects 0.000 title abstract description 5
- 238000012795 verification Methods 0.000 claims abstract description 80
- 238000000034 method Methods 0.000 claims abstract description 68
- 238000004364 calculation method Methods 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 33
- 238000010586 diagram Methods 0.000 description 25
- 238000012545 processing Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000012790 confirmation Methods 0.000 description 7
- 239000004744 fabric Substances 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
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
본 개시의 예는 일반적으로 블록체인의 노드에 대한 하드웨어 가속기에 관한 것이다.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
블록체인(100)의 트랜잭션 유동은 실행-정렬-검증 모델을 따르며, 트랜잭션이 먼저 실행된 다음 블록으로 정렬되고 최종적으로 검증되고 (지금까지 커밋된 블록의 전역 상태를 유지하기 위한 상태 데이터베이스와 함께) 원장에 커밋된다. 결과적으로, 허가형 블록체인(100)은 피어, 정렬자, 클라이언트 등과 같은 다양한 유형의 노드를 포함하며, 각각의 노드에는 MSP에서 제공하는 ID가 있다. 이러한 식별은 인증서 형태로 제공될 수 있다.The transaction flow of
클라이언트는 블록체인(100)에 커밋될 트랜잭션을 제출하는 임의의 엔티티일 수 있다. 예를 들어, 블록체인(100)이 금융 기관에서 금전 이체를 추적하는 데 사용되는 경우 클라이언트는 제1 계정에서 제2 계정(동일한 금융 기관 또는 다른 기관)으로 자금을 이동하는 트랜잭션을 제출할 수 있다. 단계 1에서, 클라이언트는 블록체인에 커밋할 트랜잭션을 제출한다. 특히, 트랜잭션은 다수의 보증 노드(또는 피어)에서 수신된다. 보증 노드는 트랜잭션을 실행/보증하고 원장에 블록을 검증/커밋하는 양자 모두를 수행한다. 각각의 보증 노드는 자체 상태 데이터베이스에 대해 트랜잭션을 실행하여 트랜잭션의 판독-기록 세트를 컴퓨팅한다(도 1에서 E로 표시됨). 판독 세트는 액세스된 키와 그 버전 번호이고, 반면에, 기록 세트는 그 새 값으로 업데이트될 키이다.A client can be any entity that submits a transaction to be committed to the
보증 프로세스가 성공하면(즉, 오류가 없는 경우), 단계 2에서 보증 노드는 트랜잭션에 그 보증을 추가하고 트랜잭션을 클라이언트에 반환한다. 클라이언트가 충분한 수의 보증을 수집한 후, 단계 3에서 클라이언트는 트랜잭션을 검증 프로세스에 제출할 것을 정렬 서비스에 요청한다. 일 실시예에서, 정렬 서비스는 트랜잭션에 대한 전체 정렬을 설정하기 위해 합의 메커니즘을 사용하는 정렬자(예를 들어, 컴퓨팅 노드)를 포함한다. 래프트(Raft) 및 아파치 카프카(Apache Kafka)/주키퍼(Zookeeper) 기반 합의 메커니즘과 같은 다수의 플러그형 합의 메커니즘을 사용할 수 있다.If the vouching process succeeds (i.e. there are no errors), at
단계 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
일단 블록(105)이 생성되면, 정렬 서비스는 단계 5에서 예를 들어 가십(Gossip) 프로토콜을 통해 모든 보증 및 비보증 노드에 이를 브로드캐스트한다. 각각의 노드는 블록(105)의 모든 트랜잭션을 검증한 다음 블록을 원장 및 상태 데이터베이스(V로 표시됨)에 커밋한다. 최종적으로, 노드 중 하나가 트랜잭션이 커밋되었다는 것 또는 트랜잭션이 원장에서 무효 또는 유효 중 어느 것으로 표시되었는지 여부에 대한 통지를 클라이언트에 발신한다(단계 6).Once the
도 1은 검증 페이즈의 검증 워크플로우(110)를 우측에 더 구체적으로 도시한다. 이 워크플로우(110)는 블록(105)을 수신하는 모든 노드에서 수행되는 4개 단계를 보여준다. 가십 프로토콜을 통해 정렬 서비스(또는 리드 노드)로부터 트랜잭션 블록(105)을 수신하면, 단계 1에서 노드는 블록의 구문 구조를 검사하고 그 서명을 확인한 다음, 아래에서 더 구체적으로 설명될 다양한 동작의 파이프라인을 통해 이를 발신한다. 단계 2에서, 블록의 각각의 트랜잭션이 구문적으로 검사되고 그 서명이 확인된다. 그 후, 검증 시스템 체인코드(VSCC)가 각각의 트랜잭션에 대해 실행되고, 여기서, 보증이 검증되고 연관된 체인코드의 보증 정책이 평가된다. 그 보증 정책이 충족되지 않으면 트랜잭션은 무효로 표시된다.Figure 1 shows the
단계 3에서, 다중 버전 동시성 제어(MVCC) 검사가 수행된다. 이 검사는 유효한 트랜잭션 사이에 판독-기록 충돌이 없는 것을 보장한다. 달리 말해서, 단지 하나의 트랜잭션만 의도했을 때에 2개의 트랜잭션이 커밋되는 이중 지불 문제를 방지한다. 상태 데이터베이스(도 1에 "상태db"로 예시됨)에 액세스함으로써 각각의 트랜잭션의 판독 세트가 다시 컴퓨팅되고 보증 페이즈의 판독 세트와 비교된다. 이러한 판독 세트가 다르면, 이때, 일부 다른 트랜잭션(이 블록(105) 또는 이전 블록)이 이미 동일한 키를 수정했으며 따라서 이 트랜잭션은 무효로 표시된다.In
마지막 단계 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
도 2a에서, 노드(200A)는 CPU(205), 하드웨어 가속기(210) 및 메모리(235)를 포함한다. CPU(205)는 각각이 임의의 수의 처리 코어를 함유할 수 있는 임의의 수의 프로세서를 나타낸다. 메모리(235)는 휘발성 메모리, 비휘발성 메모리(예를 들어, 하드 디스크 드라이브), 및 그 조합을 나타낸다. 도시된 바와 같이, 메모리(235)는 블록체인의 커밋된 트랜잭션을 나열하는 원장(240)을 저장한다.In FIG. 2A , node 200A includes
하드웨어 가속기(210)는 도 1에 예시된 검증 워크플로우(110)를 수행하기 위한 다양한 회로 요소를 함유한다. 일 실시예에서, 하드웨어 가속기(210)는 집적 회로이다. 다른 실시예에서, 하드웨어 가속기(210)는 하나 이상의 집적 회로가 장착된 보드(예를 들어, PCIe 카드와 같은 인쇄 회로 보드(PCB))이다. 일 실시예에서, 집적 회로는 프로그램 가능 로직을 포함하는 필드 프로그램 가능 게이트 어레이(예를 들어, FPGA) 또는 시스템 온 칩(SoC)이다. 이 예에서, 가속기(210)의 다양한 회로 블록은 프로그램 가능 로직으로 구현된다. 그러나, 다른 실시예에서, 집적 회로는 가속기(210)의 회로 블록이 강화된 회로부(hardened circuitry)에서만 구현되는 주문형 집적 회로(ASIC)일 수 있다. 프로그램 가능 로직을 갖는 FPGA 및 SoC를 사용하면 검증 프로세스가 변경되는 경우 가속기(210)에 유연성을 제공하여 재프로그래밍할 수 있지만 ASIC를 사용하면 공간을 절약할 수 있다.
가속기(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)에서 실행되는 소프트웨어에 의해 수행될 수 있다.
도 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,
다른 실시예에서, 가속기(210)는 가속기(210)에서 트랜잭션을 검증하는 것과 관련된 네트워크 트래픽만 수신하는 반면 다른 모든 트래픽(보증 요청과 같은 다른 유형의 블록체인 트래픽이든, 또는 비-블록체인 트래픽이든)은 NIC(245)에서 수신 및 처리한다.In another embodiment,
도 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 ,
도 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
도 4는 일 예에 따른 하드웨어 처리를 위한 데이터를 준비하기 위해 패킷을 파싱하기 위한 방법(400)의 흐름도이다. 설명의 편의를 위해, 방법(400)의 블록은 아래 도면과 병행하여 설명된다.4 is a flow diagram of a
블록 405에서, 가속기의 네트워크 인터페이스는 트랜잭션 블록의 개별 컴포넌트를 함유하는 패킷을 수신한다. 블록은 전형적으로 단일 패킷으로 발신하기에는 너무 크기 때문에(예를 들어, 블록은 1 메가바이트를 초과할 수 있음) 소프트웨어 애플리케이션은 네트워크 프로토콜이나 소프트웨어 드라이버에 의존하여 블록을 다수의 패킷으로 분할한다. 그러나, 네트워크 프로토콜/드라이버는 전형적으로 데이터가 블록에서 어떻게 구조화되어 있는지 알지 못하므로 데이터는 전형적으로 애드혹 방식으로 송신된다. 이로 인해, 하드웨어 가속기가 수신된 패킷을 그 후 파싱하고 트랜잭션 블록을 재구성하는 것은 불가능하지는 않더라도 어렵다. 그러나, 본 출원의 실시예는 하드웨어 가속기가 트랜잭션 블록의 상이한 컴포넌트들을 재구성하기 위해 패킷을 파싱할 수 있도록 트랜잭션 블록을 송신하는 기술을 설명한다.At
도 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
도 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
또한, 도 5a에 도시되지 않았지만, 발신자(515)는 컴포넌트(510)와 연관된 서명된 인증서를 제거할 수 있다. 이러한 인증서는 블록(505) 및 블록 내의 트랜잭션을 검증하는 데 사용될 수 있다. 그러나, 이러한 인증서(예를 들어, x509 인증서)는 크기가 크며, 이는 이들을 가속기(210)로 송신하려면 상당한 양의 대역폭이 필요하다는 것을 의미한다. 일 실시예에서, 발신자(515)는 그 후 가속기(210)로 발신되는 패킷(520)을 형성하기 전에 블록(505)으로부터 인증서를 제거한다. 대신에, 발신자(515)는 인증서를 ID(예를 들어, 8 비트 코드)로 대체할 수 있다. 일 실시예에서, 발신자(515)는 가속기(210)에 인증서를 개별적으로 한 번 송신하며, 가속기는 그 후 나중에 검색하기 위해 인증서를 캐시에 저장할 수 있다. 이러한 방식으로, 인증서는 블록(505)에서 다수의 컴포넌트(510)와 연관되어 있는 경우 반복적이 아니라 한 번 발신된다.Also, although not shown in FIG. 5A ,
도 5b는 일 예에 따른 블록 내의 개별 컴포넌트를 발신하기 위한 패킷(520)을 예시한다. 520은 L2 및 IP/UDP 데이터, 전송 헤더(525), 블록 머신 프로토콜 헤더(530) 및 블록 메시지 페이로드(535)를 포함한다. 전송 헤더(525)는 시퀀스 번호(Seq), 확인응답 번호(Ack) 및 제어 데이터(Ctrl)를 포함할 수 있다. 시퀀스 번호는 블록(505)을 나타내는 패킷 시퀀스에서 패킷이 있는 위치를 나타낸다. 확인응답 번호는 발신자(515)에게 다시 송신할 Ack 패킷을 생성할 때 가속기(210)에 의해 사용된다. 제어 데이터는 애플리케이션 레벨 프로토콜 오류 및 수신기 버퍼 상태와 같은 이러한 정보를 포함할 수 있다.5B illustrates a
블록 머신 프로토콜 헤더(530)는 메시지 유형(MsgType) 및 주석을 포함한다. 메시지 유형은 페이로드(535)의 데이터가 블록 헤더, 트랜잭션 또는 메타데이터인지 여부를 나타낸다. 주석은 중요한 데이터의 위치를 가리킨다. 예를 들어, 주석은 패킷(520)의 관련 데이터를 가리키는 포인터(예를 들어, 페이로드(535)의 특정 데이터를 찾을 수 있는 위치) 및 캐시 또는 다른 패킷(그러나 동일한 블록)의 데이터를 가리키는 위치 설정자를 포함할 수 있다. 일 실시예에서, 주석의 위치 설정자는 패킷(520)에 대한 ID를 표시하는 데 사용된다. 페이로드(535)는 패킷에서 발신되는 특정 컴포넌트(510)에 대응하는 데이터, 즉, 블록(505)으로부터의 메타데이터를 포함할 수 있다.The block
각각의 패킷(520)이 블록(505)의 컴포넌트(510) 중 하나를 함유하기 때문에, 이는 가속기(210)가 블록의 모든 패킷(520)을 수신하기 전에 데이터 처리를 시작할 수 있다는 이점을 제공한다. 즉, 소프트웨어가 모든 패킷을 수신한 다음 검증을 위해 블록(505)을 재구성하기를 대기하는 대신, 가속기(210)가 트랜잭션이 들어올 때 처리할 수 있다. 예를 들어, 프로토콜 프로세서는 TX2를 함유하는 패킷(520C)이 가속기(210)에서 수신되기 전에 TX1에 대응하는 패킷(520B)을 파싱할 수 있다. 따라서, 가속기(210)는 트랜잭션이 재구성되고 검증될 수 있기 전에 모든 패킷이 수신되어야 하는 소프트웨어 솔루션보다 훨씬 빨리 트랜잭션을 처리하기 시작할 수 있다.Since each
도 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
패킷 필터(610)는 메시지 유형, 주석 및 패킷 페이로드를 주석에 기초하여 메시지 페이로드를 처리하고 블록 프로세서(225)에 대한 관련 데이터를 추출하는 블록 추출기(615)로 전달한다. 블록 추출기(615)는 또한 응답 생성기(605)에 대한 메시지 유효 신호를 제공하여 생성기(605)가 블록 및 그 트랜잭션이 유효한지 또는 무효인지 여부를 발신자에게 알릴 수 있다. 블록 프로세서(225)의 세부사항은 방법(400)의 잔여 부분과 아래 도면에서 설명된다.
방법(400)으로 복귀하여, 블록 410에서 프로토콜 프로세서의 블록 추출기는 패킷의 ID를 사용하여 패킷에 대응하는 서명된 인증서를 식별한다. 앞서 설명한 바와 같이, 발신자는 블록을 복수의 패킷에서 하드웨어 가속기로 송신하기 전에 블록으로부터 인증서를 제거할 수 있다. 인증서가 크고 거의 변경되지 않기 때문에 이 작업을 수행할 수 있다. 따라서, 인증서를 참조하는 패킷의 훨씬 작은 ID 또는 키로 인증서를 교체하면 상당한 대역폭을 절약할 수 있고 트랜잭션 블록의 각각의 컴포넌트를 단일 패킷으로 발신할 수 있는 것을 보장할 수 있다.Returning to
그러나, 일단 패킷이 수신되면, 블록 추출기는 블록(및 블록의 트랜잭션)을 검증하고 블록 및 트랜잭션의 구문이 정확한 것을 보장하기 위해 인증서가 필요할 수 있다. 따라서, 블록 추출기는 컴포넌트를 재구성할 수 있으며, 이는 블록 추출기가 인증서를 식별하고 검색한다는 것을 의미한다.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
ID를 사용하여, 데이터 삽입기(705)는 ID에 대응하는 서명된 인증서를 검색하기 위해 ID 캐시(710)에서 검색을 수행한다. 즉, 정렬자가 인증서를 가속기에 발신할 때, 가속기는 이러한 인증서(및 그 대응 ID)를 ID 캐시(710)에 저장하고, 따라서, 그 후 트랜잭션 블록을 검증할 때 이러한 인증서를 검색할 수 있다.Using the ID,
방법(400)으로 복귀하여, 블록 415에서 블록 추출기(615)는 블록의 개별 컴포넌트를 재구성한다. 즉, 각각의 페이로드를 수신함에 따라 블록 추출기(615)는 대응 인증서를 검색할 수 있다. 이는 데이터 삽입기(705)가 페이로드의 다른 데이터와 함께 검색된 인증서(또는 인증서들)를 데이터 추출기(715)로 송신하는 도 7에 도시되어 있다.Returning to
데이터 추출기(715)는 상이한 시간에 트랜잭션 블록의 컴포넌트를 재구성할 수 있다. 예를 들어, 시간 1 동안 데이터 추출기(715)는 제1 수신 패킷을 사용하여 블록의 헤더를 재구성하고, 시간 2에서 데이터 추출기(715)는 제2 수신 패킷을 사용하여 블록의 제1 트랜잭션을 재구성하는 등이다. 따라서, 블록 추출기(615)는 블록 내의 상이한 컴포넌트들이 추출기(615) 내의 상이한 스테이지(예를 들어, 상이한 회로 모듈)에서 병렬로 실행될 수 있도록 파이프라인화될 수 있다.
블록 420에서, 해시 계산기(720)는 블록 내의 구분자 컴포넌트에 대한 해시를 계산한다. 일 실시예에서, 해시 계산기(720)는 전체 블록, 블록의 모든 트랜잭션 및 각각의 트랜잭션의 모든 보증에 대한 해시를 생성한다. 해시 계산기(720)는 상이한 시간에 이들 해시를 생성할 수 있다. 예를 들어, 해시 계산기(720)는 트랜잭션에 대응하는 패킷을 수신할 때 특정 트랜잭션에 대한 해시(및 해당 트랜잭션과 연관된 모든 보증에 대한 해시)를 생성할 수 있다. 그러나, 해시 계산기(720)는 블록에 대한 모든 패킷을 수신한 후 전체 블록에 대한 해시를 계산하기 위해 대기할 수 있다.At
블록 425에서, 해시 검사기(725)는 해시 계산기(720)에 의해 계산된 해시가 패킷의 해시와 일치하는지 여부를 결정한다. 즉, 발신자에 의해 송신된 패킷은 해시 계산기(720)에 의해 생성된 해시와 비교될 수 있는 이전에 계산된 해시(또는 적어도 해시에 대한 포인터)를 함유할 수 있다. 예를 들어, 발신자는 블록, 블록의 각각의 트랜잭션 및 트랜잭션의 각각의 보증에 대한 해시를 계산하고 이들 해시를 가속기(210)에 송신할 수 있다. 이들 해시가 해시 검사기(725)에 의해 생성된 로컬 해시와 일치하는 경우 이는 메시지가 유효하고 블록 및 트랜잭션에 대한 적절한 구문을 따름을 의미한다. 해시가 일치하지 않으면, 방법은 하드웨어 가속기가 수신된 데이터에 구문 오류가 있음을 표시하는 블록 445로 진행한다. 일 실시예에서, 하드웨어 가속기는 검증 프로세스가 실패했음을 나타내는 응답 메시지를 발신자에게 발신한다.At
해시가 수신된 해시와 일치한다고 가정하면, 방법(400)은 하드웨어 가속기가 수신된 데이터가 성공적으로 파싱되었음을 나타내는 블록 430으로 진행한다. 일 실시예에서, 도 6의 응답 생성기(605)는 트랜잭션 블록이 프로토콜 프로세서(220)에 의해 성공적으로 수신 및 처리되었음을 나타내는 응답 또는 확인응답(ACK) 메시지를 발신자에게 송신한다.Assuming the hash matches the received hash, the
블록 435에서, 작업 생성기(730)는 검증 프로세스를 완료하기 위해 블록 프로세서를 위한 작업을 생성한다. 일 실시예에서, 작업 생성기(730)는 블록 작업, 트랜잭션 작업 및 보증인 작업을 생성한다. 블록 작업은 블록 ID, 블록 서명(예를 들어, 블록을 생성한 정렬자의 인증서) 등을 포함할 수 있다. 트랜잭션 작업은 트랜잭션 ID, 트랜잭션 서명(예를 들어, 트랜잭션을 생성한 클라이언트의 인증서), 트랜잭션 판독/기록 세트 등을 포함할 수 있다. 일 실시예에서, 작업 생성기(730)는 블록 내의 각각의 트랜잭션에 대한 트랜잭션 작업을 생성한다. 작업 생성기(730)는 또한 트랜잭션에서 각각의 보증에 대한 보증인 작업을 생성할 수 있다. 즉, 각각의 트랜잭션은 여러 보증을 받을 수 있기 때문에 작업 생성기(730)는 각각의 이들 보증에 대한 작업을 생성할 수 있다.At
블록 440에서, 작업 생성기(730)는 하드웨어 가속기의 블록 프로세서에 작업 및 대응하는 데이터를 전달한다. 그 후, 블록 프로세서는 블록, 트랜잭션 및 보증을 검증할 수 있다. 일반적으로, 프로토콜 프로세서(및 도 5 내지 도 7에 예시된 그 회로 컴포넌트)는 수신된 패킷을 파싱하여 블록의 데이터를 소프트웨어의 도움 없이 블록 프로세서에서 소화하거나 처리할 수 있는 포맷으로 재포맷한다. 따라서, 블록체인의 검증 프로세스는 전적으로 하드웨어에 의해 수행될 수 있으므로 이 프로세스에 필요한 시간과 컴퓨팅 자원이 감소한다.At
도 8은 일 예에 따른 트랜잭션을 블록체인 원장에 커밋하기 전에 트랜잭션을 검증하기 위한 방법(800)의 흐름도이다. 설명의 편의를 위해, 방법(800)의 상이한 스테이지를 아래의 도 9 내지 도 11에 따라 설명한다. 또한, 방법(800)의 스테이지는 도 1에 예시된 검증 워크플로우(110)의 단계 1-4와 상관 관계가 있다.8 is a flow diagram of a
방법(800)은 하드웨어 가속기가 예를 들어 트랜잭션이 원장에 커밋될 수 있기 전에 검증될 필요가 있는 정렬 서비스로부터의 트랜잭션 블록을 이미 수신했다고 가정한다. 또한, 방법(800)은 프로토콜 프로세서가 블록 구문 검사(예를 들어, 도 1의 "blk 구문 검사") 및 트랜잭션 구문 검사(예를 들어, 도 1의 "tx 구문 검사")를 수행하여 검증을 수행하는 데 필요한 모든 데이터가 수신되었음을 확인한다고 가정한다.
스테이지 805에서 하드웨어 가속기는 트랜잭션 블록의 서명을 확인한다. 더 구체적으로, 블록 프로세서는 블록 검증을 수행할 수 있게 프로토콜 프로세서로부터 도 3에 도시된 정보를 수신한다. 도 9에 도시된 바와 같이, 블록 프로세서(225)는 2개의 하드웨어 서브모듈을 포함한다: 블록 확인(905) 및 블록 검증(910). 블록 확인(905)은 정렬자 서명이 블록에 있는지 확인하기 위한 타원 곡선 디지털 서명 알고리즘(ECDSA) 엔진(920)을 포함한다. 다르게 말하면, ECDSA 엔진(920)은 블록의 수신된 서명을 정렬자에게 알려진 서명(예를 들어, 인증서)과 비교하여 이들이 일치함을 보장한다. 그런 식으로 블록 확인(905)은 트랜잭션 블록이 승인된 노드에서 유래한 것임을 확인할 수 있다. ECDSA 엔진(920)이 도시되어 있지만, 임의의 적절한 서명 알고리즘 엔진을 사용할 수 있다.At
정렬자 서명을 포함하는 것에 더하여, 블록 확인(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
일 실시예에서, 블록 확인(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,
블록 프로세서(225)는 또한 블록 확인(905) 및 블록 검증(910)으로부터 수신된 신호를 모니터링함으로써 블록 레벨 및 트랜잭션 레벨 통계를 수집하는 블록 모니터(915)를 포함한다. 예를 들어, 블록 모니터(915)는 트랜잭션의 블록을 검증하는 데 필요한 시간 또는 레이턴시 또는 블록 프로세서(225)의 처리량(예를 들어, 단위 시간당 처리되는 블록의 수)을 결정할 수 있다.
또한, 도 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
스테이지 815에서 블록 검증(910)의 제1 파이프라인 스테이지(2a)는 각각의 트랜잭션의 서명을 확인한다. 도 10에 도시된 바와 같이, 스테이지 2a는 각각 ECDSA 엔진(1035)을 포함하는 다수의 트랜잭션 확인 블록(1005)을 포함한다. 이들 엔진(1035)은 트랜잭션의 클라이언트(또는 생성자)의 서명을 확인한다. 즉, ECDSA 엔진(1035)은 수신된 서명을 tx 데이터 및 생성자의 공개 키 쌍에 기초하여 계산된 서명과 비교함으로써 트랜잭션이 알려진 클라이언트에 의해 서명되었음을 보장한다.In
다수의 트랜잭션 확인 블록(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
일 실시예에서, 보증 정책 평가기(1020)는 체인코드별 기반으로 보증 정책을 유지할 수 있다. 평가기(1020)는 트랜잭션이 적절한 보증을 받았음을 확인한다. 즉, 보증이 승인된 보증 노드에 의해 주어졌다고 가정하면, 평가기(1020)는 적절한 보증 노드로부터 보증을 받은 트랜잭션을 확인한다. 예를 들어, 트랜잭션이 두 은행 사이에서 금전을 이체해야 한다고 표시하는 경우, 평가기(1020)는 트랜잭션이 이들 은행 둘 모두에 의해 운영되는 보증 노드로부터 보증을 받은 것을 보장하기 위해 검사할 수 있다. 트랜잭션이 단지 하나의 은행에 대한 보증 노드에 의해 또는 트랜잭션에 영향을 받지 않는 다른 은행에 의해 보증된 경우, 평가기(1020)는 트랜잭션을 무효화할 수 있다.In one embodiment, the
스테이지 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
도 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
스테이지 835에서, CPU(또는 하드웨어 가속기)는 트랜잭션이 유효한지 또는 무효한지를 클라이언트에게 알린다. 즉, CPU는 검증 결과를 평가하여 트랜잭션 블록의 각각의 개별 트랜잭션이 검증되었는지 여부를 결정할 수 있다. 그 후, 클라이언트는 무효 트랜잭션을 다시 제출하도록 선택할 수 있다.At
스테이지 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. 블록체인에 대한 검증 프로세스를 가속화하기 위한 집적 회로에 있어서, 블록체인의 노드로부터 트랜잭션 블록을 함유하는 복수의 패킷을 수신하도록 구성된 네트워크 인터페이스; 트랜잭션에 관한 데이터를 생성하기 위해 복수의 패킷을 파싱하도록 구성된 프로토콜 프로세서; 및 블록 프로세서로서, 블록의 서명을 확인하고; 블록의 각각의 트랜잭션을 검증하고; 트랜잭션의 검증 결과를 저장하도록 구성된, 상기 블록 프로세서를 포함한다.
실시예 2. 예 1의 집적 회로에 있어서, 상기 집적 회로는 SoC(system on a chip), FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit) 중 적어도 하나를 포함한다.
실시예 3. 예 2의 집적 회로에 있어서, SoC 또는 FPGA는 프로그램 가능 로직을 포함한다.
실시예 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) 기록 블록을 포함한다.
실시예 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.
상기 블록체인의 승인된 노드에 대응하는 상기 서명된 인증서의 로컬 사본을 저장하는 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.
상기 복수의 패킷의 데이터 및 상기 검색된 서명된 인증서를 사용하여 상기 트랜잭션 블록을 재구성하도록 구성된 데이터 추출기;
상기 재구성된 트랜잭션 블록을 사용하여 상기 트랜잭션 블록에 대응하는 해시를 생성하도록 구성된 해시 계산기; 및
상기 트랜잭션 블록이 구문 오류를 함유하지 않도록 하기 위해 상기 생성된 해시가 이전에 계산된 해시와 일치하는지 검사하도록 구성된 해시 검사기를 포함하는, 컴퓨팅 시스템.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.
상기 블록체인의 다른 노드로부터 상기 트랜잭션 블록을 수신하도록 구성된 네트워크 인터페이스로서, 상기 트랜잭션 블록은 복수의 패킷에 포함되는, 상기 네트워크 인터페이스;
상기 트랜잭션에 관한 데이터를 생성하기 위해 상기 복수의 패킷을 파싱하도록 구성된 프로토콜 프로세서; 및
상기 프로토콜 프로세서로부터 상기 데이터를 수신하고, 상기 블록의 서명을 확인하고, 상기 블록 내의 각각의 트랜잭션을 검증하도록 구성된 블록 프로세서를 포함하는, 컴퓨팅 시스템.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.
상기 블록의 상기 서명이 상기 블록체인에서 정렬자의 알려진 서명과 일치하는지 확인하도록 구성된 제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.
상기 트랜잭션에 대응하는 서명이 상기 블록체인을 사용하도록 승인된 클라이언트의 알려진 서명과 일치하는지 확인하도록 구성된 제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.
하드웨어 가속기에서, 블록체인의 원장에 커밋될 트랜잭션 블록에 대응하는 복수의 패킷을 수신하는 단계;
상기 하드웨어 가속기에서, 상기 트랜잭션 블록의 상이한 컴포넌트들에 대한 해시를 계산하는 단계;
상기 하드웨어 가속기에서, 상기 해시가 이전에 계산된 해시와 일치하는지 결정하는 단계; 및
상기 하드웨어 가속기에서, 상기 트랜잭션 블록을 검증하는 작업을 생성하는 단계를 포함하는, 방법.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.
상기 하드웨어 가속기의 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.
상기 복수의 패킷의 데이터 및 상기 검색된 서명된 인증서를 사용하여 상기 트랜잭션 블록을 재구성하는 단계를 더 포함하며,
상기 해시는 상기 재구성된 트랜잭션 블록을 사용하여 계산되고,
상기 해시가 이전에 계산된 해시와 일치한다고 결정하는 것은 상기 트랜잭션 블록이 구문 오류를 함유하는지 여부를 나타내는, 방법.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.
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)
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 |
-
2021
- 2021-06-22 EP EP21743337.4A patent/EP4237984A1/en active Pending
- 2021-06-22 WO PCT/US2021/038528 patent/WO2022093335A1/en active Application Filing
- 2021-06-22 KR KR1020237016456A patent/KR20230097062A/en active Search and Examination
- 2021-06-22 JP JP2023523289A patent/JP2023547817A/en active Pending
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 |